我在 Google Chrome 中检查了一个 javascript 异常。
我注意到函数get message
, get stack
,set message
和set stack
. 我试图捕捉这个异常并运行alert(e.get_message());
只是得到一个错误。我也尝试运行alert(e.get message());
,由于空间原因,它显然返回了另一个错误。
这些神秘的方法是什么,开发人员如何称呼它们?
我在 Google Chrome 中检查了一个 javascript 异常。
我注意到函数get message
, get stack
,set message
和set stack
. 我试图捕捉这个异常并运行alert(e.get_message());
只是得到一个错误。我也尝试运行alert(e.get message());
,由于空间原因,它显然返回了另一个错误。
这些神秘的方法是什么,开发人员如何称呼它们?
它们是属性访问器。它们是在您获取或设置属性时运行的有效函数。
e.message; // getter
e.message = "foobar"; // setter
使用属性访问器,它们不仅仅是简单地获取和设置属性值。他们可以运行在对象的属性描述符中建立的代码,因此属性访问可能会产生副作用。
例子:
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 支持的实现。