【发布时间】:2012-08-31 19:54:03
【问题描述】:
我正在开发一个在 javascript 中创建类的实用程序。 它有效,问题是如何定义私有属性。
这是代码
var OO = {
Class:function(){
var len = arguments.length;
var data = arguments[len-1];
var Klass;
if (data.constructor === Object){
Klass = function (){};
} else {
Klass = data.constructor;
delete data.constructor;
}
OO.extend(Klass.prototype,data); //Classic Extend Method
return Klass;
},
//Simple extend method, just what I need in this case
extend: function(target, source){
var prop;
for (prop in source)
target[prop] = source [prop];
}
}
这就是它的工作原理
// first create a class
var person = OO.Class ({
constructor: function (name, age) {
this.name = name;
this.age = age;
},
name:'',
age:'',
getName: function () {
return this.name;
},
getAge: function () {
return this.age;
}
});
这是实例
var one = new Person ('josh', 22);
还有问题:
one.age / / returns 22
one.name / / returns josh
我需要的是这些属性只能通过getName()和getAge()之类的方法访问
EDIT1:添加扩展功能
【问题讨论】:
-
使用当前的解决方案几乎无法做到这一点。
-
为什么有些人坚持使用经典的 JavaScript 编码?
-
您可能对 Douglas Crockford 的 Private Members in JavaScript 文章感兴趣。
-
@RobG 是的,感谢您的链接...
-
@AlienWebguy 这个老了 :)
标签: javascript oop