源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

如何在JavaScript中实现私有属性的写类方式(二)

  • 时间:2021-12-07 06:33 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:如何在JavaScript中实现私有属性的写类方式(二)
上一篇写了个工具函数$class,这篇再完善以下。实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性
[u]复制代码[/u] 代码如下:
/**  * @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]); }
先写个父类
[u]复制代码[/u] 代码如下:
/**  * 父类 Person  */ $class('Person','',function(){     // 私有属性age     var age;     this.init = function(n, a){         // 公有属性name         this.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
[u]复制代码[/u] 代码如下:
$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一个子类实例
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部