JS能够覆盖Object的Getter方法吗?

时间:2015-10-16 02:45:49

标签: javascript

大家:

众所周知,从Object获取一个不存在的值将得到一个“未定义”,有没有办法抛出错误而不是返回undefined

例如:

var a= {example:"example"};
//do something here

a.b  //error throw instead of "undefined"
非常感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

Object.define属性有一种指定get和set方法的方法

查看下面的链接

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

对象类有一个方法“hasOwnProperty”,在尝试访问它之前也可用于检查属性是否存在

答案 1 :(得分:0)

ES6附带代理对象,可帮助您重载点运算符。这意味着您可以在检索属性时调用函数。这将允许您检查属性是否已定义,以及它是否是""抛出"一个错误。希望这可以帮助。更多信息here

答案 2 :(得分:0)

查看上面的示例,如果您要尝试初始化该属性" b"在" a"之后的对象a上有一个值已定义,然后您可以轻松地执行以下操作:

var a= {example:"example"};
//do something here

a.b = 'some value';
a.b  //now an error is not throw

大多数对象即使在初始化后也可以重新定义。初始化对象后,可以添加和删除属性和方法。 我说得最多,因为可以防止对象被扩展/更改(使用Object.preventExtension方法)。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions