gpt4 book ai didi

javascript - 从 `__defineGetter__` 访问原始属性值

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:20 25 4
gpt4 key购买 nike

是否可以从 Javascript getter 访问原始属性值?

如果没有,是否还有其他“现代”javascript 技术可以实现类似的功能?

也就是说,如果我有这样的代码

o = {}
o.foo = "bar"
o.__defineGetter__("foo", function(){
//can I access the value "bar" here?
return "some other value";
});

是否可以从我的 getter 函数中访问值“bar”?还是使用 __defineGetter__ 会破坏属性?

(上下文:不是新手开发人员,但在过去的 4/5 年里我一直在忽略非跨浏览器的 Javascript,我希望 catch 来)

最佳答案

ECMAscript 262 第 5 版引入了在规范正式定义的对象上使用 gettersetter 的选项。您可以直接在对象文字上设置它们

var foo = {
get bar() {
return "foo";
}
};

或使用Object.defineProperty()

var foo = { };
Object.defineProperty(foo, 'bar', {
get: function() {
return "foo";
}
});

但是,问题还是一样。覆盖属性将不可撤销地覆盖它。您可以做的是使用对象 prototype chain 来获取属性。


var foo = { };

foo.bar = 42;

Object.defineProperty(Object.getPrototypeOf( foo ), 'bar', {
get: function() {
return 'overwritten';
},
configurable: true
});

console.log( foo.bar ); // 42
delete foo.bar;
console.log( foo.bar ); // "overwritten"

关于javascript - 从 `__defineGetter__` 访问原始属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131060/

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