Man*_*uel 8 javascript getter prototype ecmascript-5
如何为原型指定默认的getter?使用默认getter,我的意思是调用if函数obj.undefinedProperty123.
我尝试了Object.prototype.get = function(property){..},但在这种情况下不会调用它.
在ECMAScript 5中,您只能通过以下方式拦截特定命名属性(通常不是所有属性)的get/set操作Object.defineProperty:
Object.defineProperty(someObj, "someProp", {
get: function() {
console.log("you tried to get someObj.someProp");
return "foo";
}
});
Run Code Online (Sandbox Code Playgroud)
这里,该get函数将在代码尝试读取的任何时候运行someObj.someProp.
在即将发布的ECMAScript 6草案中,这可以通过代理进行.代理具有底层目标对象和set/get函数.只要在任何代理的属性上发生set或get操作,就会运行相应的函数,将代理的目标对象,使用的属性名称和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);
Run Code Online (Sandbox Code Playgroud)
在这里,设置为获取属性值prox将导致set/ getfunctions运行.
| 归档时间: |
|
| 查看次数: |
6578 次 |
| 最近记录: |