在JavaScript中捕获对未定义属性的访问权限

avr*_*vri 10 javascript language-features

Spider-Monkey JavaScript引擎实现__noSuchMethod__JavaScript对象的回调函数.

每当JavaScript尝试执行Object的未定义方法时,都会调用此函数.

我想设置一个Object的回调函数,只要访问或分配Object中的未定义属性,就会调用该函数.

我还没有找到__noSuchProperty__为JavaScript对象实现的函数,如果有任何解决方法可以实现相同的结果,我很好奇.

请考虑以下代码:

var a = {};
a.__defineGetter__("bla", function(){alert(1);return 2;});
alert(a.bla);
Run Code Online (Sandbox Code Playgroud)

它相当于[alert(1);alert(2)]- 即使a.bla未定义.

我想获得相同的结果,但是对于未知的属性(即事先不知道a."bla"将是访问的属性)

Mos*_*she 4

在 ECMAScript 的下一个版本中,使用 Object.observe 应该很容易。在这里阅读更多内容: http://addyosmani.com/blog/a-few-new-things-coming-to-javascript/