我是JavaScript的新手,但不是OOP的新手。
这是创建吸气剂的有效方式吗? JavaScript中的setters?
" class",
function Person (age){
this.age = age;
};
吸气剂,
Person.prototype.getAge = function(){
return this.age;
};
和一个二传手。
Person.prototype.setAge = function(arg){
this.age = arg;
};
它似乎工作正常,但我不知道惯例,我到处都有不同的描述,但我的解决方案是否有效?
答案 0 :(得分:2)
您可能需要Object.defineProperty
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty),以下是使用它的示例:
Object.defineProperty(Person.prototype, 'age', {
get: function(){
return this.__age__;
},
set: function(value){
this.__age__ = value;
}
});
如果需要,您还可以在其他位置保存变量。以下内容将充当在Person
的所有实例中设置和访问的单例值:
var age;
Object.defineProperty(Person.prototype, 'age', {
get: function(){
return age;
},
set: function(value){
age = value;
}
});
如果你想为你创建的Person对象的每个实例都有一个age
变量,你需要在构造函数中添加变量声明:
function Person(){
var age;
// ditto from the second example
}