JavaScript 中实现私有属性的写类方式

  之前讨论过JavaScript中的写类方式。但没有讨论私有的实现。这篇看下。

  我们知道JS中私有属性的实现本质就是 var + closure。如下:

function Person(n, a){
// public
this.name = n;
// private
var age = a;
this.getName = function(){
return this.name;
}
this.getAge = function(){
return age;
}
}

  上一页写了个工具函数$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]);
}

it知识库JavaScript 中实现私有属性的写类方式,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。