gpt4 book ai didi

使用私有(private)成员创建 JavaScript 类

转载 作者:数据小太阳 更新时间:2023-10-29 05:39:26 25 4
gpt4 key购买 nike

我正在开发一个实用程序,用于在 javascript 中创建类。它有效,问题是如何定义私有(private)属性。

这是代码

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:添加扩展功能

最佳答案

闭包由构造函数参数创建,所以这就是您需要做的(编辑 AlienWebguy 的代码):

var Person = function(name, age){

this.getName = function() {
return name;
};

this.getAge = function() {
return age;
};

};

var john = new Person('johnathan', 33);

document.writeln(john.name); // undefined
document.writeln(john.age); // undefined
document.writeln(john.getName()); // johnathan
document.writeln(john.getAge()); // 33

关于使用私有(private)成员创建 JavaScript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com