除了编码风格以外,还有以下两种优点/缺点:

Circle.prototype = { radius : 10};
Object.defineProperty(Circle.prototype, 'circumference', {
     get: function() { return 2*Math.PI*this.radius; }
});


Circle.prototype = {
  radius : 10,
  get circumference() { return 2*Math.PI*this.radius; }
}

最佳答案

在属性定义中,JavaScript通过内部方法DefineOwnProperty处理该问题,其中分配由内部方法Put处理。简而言之,第二个属性检查属性是否为只读,如果是,则导致拒绝。
使用只读属性可能会导致后果,这会阻止分配,但而不是定义。

如果要创建新属性,最好使用定义。如果要更改属性的值,可以使用赋值。

看一下here,获得更多非常有趣的文章。

编辑:实际上,defineProperty用于诸如定义只读属性和有关所定义属性行为的其他原因。
在这里也可以找到more

关于javascript - 使用getter和setter与在JavaScript中定义属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27549015/

10-10 00:19
查看更多