如何在原型上“覆盖”一个已定义的(get-)属性?
- 论坛
- 如何在原型上“覆盖”一个已定义的(get-)属性?
10 浏览
如何在原型上“覆盖”一个已定义的(get-)属性?
我有一些代码,在原型上定义了一个getter(如果相关的话,没有setter)。在99.99%的情况下,返回的值是正确的;然而,目标是为特定的对象设置属性以评估为不同的值。
foo = {} Object.defineProperty(foo, "bar", { // 只返回奇数的骰子面 get: function () { return (Math.random() * 6) | 1; } }); x = Object.create(foo); x.bar // => 例如 5 x.bar = 4 // 通过公正的掷骰子 x.bar // 不对 => 例如 3
如何覆盖x这个已存在的对象的属性,使其可赋值(例如具有默认的属性行为)?
附加说明:虽然可以在x上定义一个新的属性(值或get/set),但我想知道是否有一种方法可以停止[原型]上属性的行为,并将"bar"转回成特定实例的普通/临时属性。