当对象字面量内的方法定义以“get”关键字为前缀时,它会做什么?

问题描述 投票:0回答:2

我正在使用handsontable库,我想让我的应用程序在IE8-IE9中运行(即使它不是IE < 10 compatible...). When my code use the minify version I get an error in the JS console : "';' expected".

这是代码。

{
    get DEFAULT_WIDTH() {
        return 50;
    }
}

我只是不知道这个语法。

get DEFAULT_WIDTH()
有什么作用?

javascript getter object-literal
2个回答
1
投票

MDN 有 get 的文档,包括支持浏览器的列表。 get 的作用是在查找属性时调用一个函数。请参阅定义 getter 和 setter以获得更一般的解释。


0
投票

get
语法将对象属性绑定到查找该属性时将调用的函数。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

更一般和更详尽的解释可以在这里找到:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters

基本上,它允许您定义当通过代码“读取”某个对象属性时会发生什么。以类似的方式,您还可以使用 set 定义来定义当代码 writes 到该属性时会发生什么。在这两种情况下,您都会覆盖该对象属性的标准行为。


这都是 ECMAScript 5.1 的一部分,因此在 IE 中不可用

你的示例代码有什么作用?< 9.

在示例代码中,您可以看到每当读取属性 DEFAULT_WIDTH 时,都会返回一个

constant

值。我猜这样做的目的是确保 DEFAULT_WIDTH 不能被重新定义为其他值(事实上可以,但读取它仍会返回 50)。

使用defineProperty在现有对象上定义getter

要稍后随时将 getter 附加到现有对象,请使用

Object.defineProperty()

  
  

var o = { a:0 }

  
Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
  
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)
  
  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Defining_a_getter_on_existing_objects_using_defineProperty

© www.soinside.com 2019 - 2024. All rights reserved.