这些神秘的javascript异常方法是什么?

时间:2012-07-30 20:04:26

标签: javascript

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

enter image description here

我注意到函数get messageget stackset messageset stack。我尝试捕获此异常并仅运行alert(e.get_message());以获取错误。我还试图运行alert(e.get message());,由于空间的原因,显然会返回另一个错误。

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

1 个答案:

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