使用getter和setter与javascript中的定义属性

时间:2014-12-18 14:37:57

标签: javascript

除了编码风格之外,还有任何优点/缺点:

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

VS

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

1 个答案:

答案 0 :(得分:2)

在属性定义中,JavaScript通过内部方法DefineOwnProperty处理它,其中赋值由内部方法Put处理。简而言之,第二个检查属性是否为只读,如果是,则导致拒绝。 当使用只读属性(这会阻止分配)但定义时,这会产生影响。

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

请查看here以获取更多非常有趣的文章。

编辑:实际上,defineProperty的使用原因包括定义只读属性以及有关所定义属性行为的其他原因。 看看这里more