使用 getter 和 setters vs 在 javascript 中定义属性

Using getter and setters vs defining properties in javascript

本文关键字:javascript 定义 属性 vs getter setters 使用      更新时间:2023-09-26

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

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 处理。简而言之,第二个检查属性是否为只读,如果是,则导致拒绝。这在使用只读属性时可能会产生后果,这会阻止分配,但不会阻止定义。

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

看看这里更多,非常有趣的文章。

编辑:实际上,defineProperty用于定义只读属性等原因以及有关所定义属性行为的其他原因。也请看这里了解更多。