JavaScript中的getter和setter(语法是否正确?)
我不熟悉JavaScript,但一般来说不熟悉OOP 这是在JavaScript中创建getter和setter的有效方法吗 “类” 盖特JavaScript中的getter和setter(语法是否正确?),javascript,oop,Javascript,Oop,我不熟悉JavaScript,但一般来说不熟悉OOP 这是在JavaScript中创建getter和setter的有效方法吗 “类” 盖特 Person.prototype.getAge = function(){ return this.age; }; 和二传手 Person.prototype.setAge = function(arg){ this.age = arg; }; 它似乎工作正常,但我不知道惯例,我到处都有不同的描述,但我的解决方案有效吗?您可能想要对象。d
Person.prototype.getAge = function(){
return this.age;
};
和二传手
Person.prototype.setAge = function(arg){
this.age = arg;
};
它似乎工作正常,但我不知道惯例,我到处都有不同的描述,但我的解决方案有效吗?您可能想要
对象。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
}
请参阅此链接,以避免与类似术语混淆:
此。uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuumember@zerkms双底栏是属性的默认私有标志(甚至浏览器也使用了该约定)那么,我们的解决方案之间的实际区别是什么?@timpal0l:区别是语义上的。您的解决方案更明显,给定的更神奇。@csuwldcat:code>的代码约定有参考吗?我看到\u foo
或foo
的使用频率更高。
function Person(){
var age;
// ditto from the second example
}