如何为原型(prototype)指定默认的 getter?
对于默认 getter,我的意思是在调用 obj.undefinedProperty123
时调用的函数。
我试过 Object.prototype.get = function(property) {..} 但在这种情况下不会调用。
最佳答案
在 ECMAScript 5 中,您只能通过 Object.defineProperty
拦截对特定命名属性(不是所有属性)的获取/设置操作。 :
Object.defineProperty(someObj, "someProp", {
get: function() {
console.log("you tried to get someObj.someProp");
return "foo";
}
});
在这里,get
函数将在任何时间代码尝试读取 someObj.someProp
时运行.
在即将发布的 ECMAScript 6 草案中,这将通过 proxies 实现。 .代理有一个底层目标对象和设置/获取函数。任何时候在代理的任何属性上发生设置或获取操作时,都会运行适当的函数,将代理的目标对象、使用的属性名称和 set
中使用的值作为参数。尝试。
var proxyHandler = {
get: function(obj, name){
console.log("you're getting property " + name);
return target[name];
},
set: function(obj, name, value) {
console.log("you're setting property " + name);
target[name] = value;
}
}
var underlyingObj = {};
// use prox instead of underlyingObj to use get/set interceptor functions
var prox = new Proxy(underlyingObj, proxyHandler);
在这里,设置为获取 prox
上的属性值将导致 set
/get
要运行的函数。
关于javascript - 如何使用 ECMAScript 5 定义默认的 getter 和 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112793/