6

我在 Google Chrome 中检查了一个 javascript 异常。

在此处输入图像描述

我注意到函数get message, get stack,set messageset stack. 我试图捕捉这个异常并运行alert(e.get_message());只是得到一个错误。我也尝试运行alert(e.get message());,由于空间原因,它显然返回了另一个错误。

这些神秘的方法是什么,开发人员如何称呼它们?

4

1 回答 1

7

它们是属性访问器。它们是在您获取或设置属性时运行的有效函数。

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 支持的实现。

于 2012-07-30T20:08:07.593 回答