在 Javascript 中重新定义 Object.defineProperty
Redefine Object.defineProperty in Javascript
我想了解是否可以在子类(.prototype)中重新定义Object(.prototype)的"definePropery"函数,以便setter不仅可以设置属性的值,还可以执行其他方法。
我尝试过这样的事情:
Myclass.prototype.defineProperty = function (obj, prop, meth) {
Object.defineProperty.call(this, obj, prop, {
get: function () {
return obj[prop]
},
set: function () {
obj[prop] = n;
alert("dev")
}
})
}
但是 id 不起作用
您似乎对Object.defineProperty
的工作方式感到困惑。你只在Object
上调用defineProperty
,然后传入要定义其属性的对象。 所以你不需要这个魔法,因为defineProperty
根本不存在于你的类的实例上。
var obj = {a:123};
Object.defineProperty(obj, 'foo');
// works fine!
obj.defineProperty('foo');
// TypeError: Object #<Object> has no method 'defineProperty'
但这意味着您可以添加它,没问题:
Myclass.prototype.defineProperty = function (obj, prop, meth) {
Object.defineProperty(this, prop, {
get: function () {
return obj[prop]
},
set: function (n) {
obj[prop] = n;
alert("dev")
}
})
}
请注意此行:
Object.defineProperty(this, prop, {
我们传入我们想要属性的对象 ( this
) 和属性的名称 ( prop
)。 然后是 setter/getter 对象。 根本不需要覆盖任何东西。 您只需提供一个允许对象声明其自己的属性的方法即可。
请参阅此处的工作示例:http://jsfiddle.net/TeZ82/
相关文章:
- Join架构验证:Join.object定义数组中的有效键
- 如何访问npm模块抛出的自定义错误对象[error:[object object]]
- 为什么“如果( !Object.property)“,如果 Object 未定义,则中断
- 是否有类似Object.defineProperty的方法来定义变量
- 不涉及私有“函数”的“Object.create”的自定义实现
- 如何列出使用Object.defineProperty定义的属性
- 为什么new object()创建的对象的原型未定义
- JQuery TypeError:对象未定义(length=object.length,)
- 在 Javascript 中重新定义 Object.defineProperty
- 哪个 JAvaScript 库定义了 JavaScript Date Object 的格式函数
- Javascript,实现自定义 Object.Create
- object.draw() 显示了 al object.draw() 调用中最后定义的图像
- 描述使用 Object.defineProperty 定义的属性
- _id是未定义的,即使它's就在console.log(object)中
- Object.keys forEach 返回未定义
- ECMAScript 5定义了用于构造和继承的通用工厂模式[Object.create()]
- 如何为Object.define()定义的属性创建唯一的toJSON方法
- 定义带有"{}object",意外TypeError的变量
- 使用 Object.hasOwnProperty 与测试属性(如果属性未定义)的好处
- 如何创建一个JavaScript构造函数,将自定义字符串返回给Object.prototype.toString()