我在Google Chrome中检查了一个javascript异常。
我注意到函数get message
,get stack
,set message
和set stack
。我尝试捕获此异常并仅运行alert(e.get_message());
以获取错误。我还试图运行alert(e.get message());
,由于空间的原因,显然会返回另一个错误。
这些神秘的方法是什么,开发人员如何称呼它们?
答案 0 :(得分:7)
他们是财产存取者。当你获得或设置属性时,它们是有效的函数。
e.message; // getter
e.message = "foobar"; // setter
使用属性访问器,这些不仅仅是一个简单的get和set属性值。他们可以运行在对象的属性描述符中建立的代码,以便属性访问可以产生副作用。
示例:的
var o = Object.create(Object.prototype, {
foobar: {
get: function() { return "getter"; },
set: function(val) { alert("setter " + val); }
}
});
o.foobar; // "getter"
o.foobar = "raboof"; // alerts "setter raboof"
要查看为给定属性设置的属性描述符,请使用Object.getOwnPropertyDescriptor
...
console.dir(Object.getOwnPropertyDescriptor(e, "message"));
Object
configurable: true
enumerable: false
get: function getter() { [native code] }
set: function setter() { [native code] }
请注意,这些技术需要ECMAScript 5支持的实现。