gpt4 book ai didi

javascript - 动态 Getters 和 Setters - 为什么这不起作用?

转载 作者:行者123 更新时间:2023-12-03 09:45:12 25 4
gpt4 key购买 nike

我正在尝试创建一个动态构建自己的 getter 和 setter 的对象:

function Person( properties ) { // 'properties' is an object literal

this._private = properties; // private by convention

for ( key in this._private ) {

this[key] = function() {

return this._private[key];
}
}
}

我希望,这会创建这样的东西:

var jack = new Person({

working:true,
age:33,
gender:'male'
});

jack.working() --> true
jack.age() --> 33
jack.gender() --> 'male'

问题是,它总是返回“男性”,如下所示:

jack.working() --> 'male'
jack.age() --> 'male'
jack.gender() --> 'male'

我错过了什么?哦,这只是概念验证。我知道这不是在 JavaScript 中创建 getter 和 setter 的完美解决方案。

最佳答案

您遇到了典型的范围界定问题。创建一个新函数以在 key 周围创建范围:

function Person(properties) { // 'properties' is an object literal
var key;

this._private = properties; // private by convention
this.buildGetter = function (key) {
this[key] = function () {
return this._private[key];
}
};
for (key in this._private) {
this.buildGetter(key);
}
}

示例: http://jsfiddle.net/SEujb/

关于javascript - 动态 Getters 和 Setters - 为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592527/

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