上一篇写了个工具函数$class,这篇再完善以下。实现以下功能

1,继承

2,子类继承父类时,不继承父类的私有属性

/*** @param {String} className* @param {String/Function} superCls* @param {Function} classImp*/
function $class(className, superCls, classImp){if(superCls === '') superCls = Object;function clazz(){if(typeof this.init == "function"){this.init.apply(this, arguments);}}var p = clazz.prototype = new superCls();var _super = superCls.prototype;window[className] = clazz;classImp.apply(p, [_super]);
}

先写个父类

/*** 父类 Person*/
$class('Person','',function(){// 私有属性agevar age;this.init = function(n, a){// 公有属性namethis.name = n;// 私有属性初始化age = a;};this.getName = function(){return this.name;};this.setName = function(name){this.name = name;}this.getAge = function(){return age;};this.setAge = function(a){age = a;};
});

写子类,继承于Person

$class("Man",Person, function(supr){var school;this.init = function(n, a, s){supr.init.apply(this, [n,a]);school = s;}this.getSchool = function(){return school;};this.setSchool = function(s){school = s;};
});

new一个子类实例

var m = new Man('tom', 25, 'pku');
console.log(m.name); // tom 继承父类的共有属性name可以直接使用点操作符获取
console.log(m.age);  // undefined 父类的私有属性age不能直接使用点操作符获取
console.log(m.getAge()); // 25 可通过父类的共有方法getAge获取私有属性age
console.log(m.school); // undefined Man自己的私有属性仍然不能通过点操作符获取
console.log(m.getSchool()); // pku 通过getSchool()方法获取私有属性school

JavaScript中实现私有属性的写类方式(2)相关推荐

  1. Python类中的私有属性和私有方法

    Python类中的私有属性和私有方法 Python是面向对象的语言,在Python里一切皆对象,所以大部分情况下,我们都是通过类的方式来编程. 但是Python中的属性和方法在类的外部默认是可以访问的 ...

  2. python私有属性怎么定义_Python中定义私有属性的方法是()。

    [判断题]请假条带有请求的性质,所以一般来说篇幅要尽量长一些,以示郑重;更多要用煽情性语句,以打动对方.( ) [单选题]关于类和对象的关系,下列描述正确的是(). [选择]Трудоспособны ...

  3. 在 JavaScript 中访问对象属性的 3 种方法

    您可以通过 3 种方式访问 JavaScript 中对象的属性: 点属性访问器:object.property 方括号属性访问:object['property'] 对象解构:const { prop ...

  4. JavaScript的写类方式(4)——转

    转自:http://www.cnblogs.com/snandy/archive/2011/03/07/1973241.html 工具函数如下 01 /** 02  * $class 写类工具函数之三 ...

  5. JavaScript中的私有成员

    JavaScript中的私有成员 Douglas Crockford www.crockford.com 翻译:ShiningRay @ Nirvana Studio JavaScript 是世界上最 ...

  6. 删除javaScript中对象的属性

    删除javaScript中对象的属性 语法 delete 对象.属性;

  7. Backbone的写类方式

    从两个角度去讨论Backbone的写类方式 Backbone内部的写类方式,Backbone自身的类如Model.Collection.View等是如何定义的 Backbone外部的写类方式,如何使用 ...

  8. 私有属性的另类访问方式

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.itpub.net/26250550/viewspace-1411768/#私有属性 ...

  9. 1.JavaScript中定义数组的两种主要方式

    JavaScript中定义数组的两种主要方式(new Array()和[]方式) new Array() ①可以用像JAVA的那种写法的方式定义,如 var arr = new Array() 这样定 ...

最新文章

  1. 什么是动态DNS 动态DNS有什么用
  2. zabbix nginx php postgresql,debian10安装zabbix4.2+nginx+postgresql
  3. android状态机实现原理
  4. 为什么先交钱后用电_适合痘痘痘印的好的护肤品,为什么要先清洁后祛痘!_新闻中心...
  5. Ubuntu 12.04 图形界面问题解决 开机死机
  6. java fx listview,JavaFX 8自定义ListView单元它是邪恶的
  7. 全国计算机等级考试题库二级C操作题100套(第48套)
  8. 面试:整理面试中常被问到的8种数据结构
  9. 我应该使用32位还是64位JVM?
  10. 防止重复提交js jquery ajax
  11. 解读金融高频交易不出错的金手指:分布式事务管理
  12. python统计数组元素个数_统计二维数组里元素的个数
  13. For循环案例---九九乘法表
  14. 开发过程中解决各种跨域问题
  15. python学习之路(10)--难点
  16. RHEL5.0 搭建DNS服务器
  17. 汉王数据导入java环境,怎样把u盆内容导入汉王门禁考勤管理软件
  18. WIN10系统下命令提示符(cmd)的基本操作
  19. 浅谈计算机软硬件的日常维修与维护,浅谈计算机硬件的日常维护工作
  20. Firefox上IETab插件造成的一个问题

热门文章

  1. 5G商用对视频会议市场增长具有积极意义
  2. 集合框架知识系列05 HashMap的源码分析和使用示例
  3. [UWP]了解模板化控件(7):支持Command
  4. valgrind的说明使用和原理
  5. Promise 简介
  6. 用eclipse来运行带参数的命令行程序,配置命令行程序的参数
  7. GBin1分享:jQuery新手技巧之“避免过多使用$('.someclass')”
  8. 生成多文件的Assembly 的两种方法
  9. 多进程PHP脚本实现海量数据转移总结
  10. 好程序员大数据培训技术分享:Hadoop集群同步