var myObject = { get a() { // 给 a 定义一个 getter return 2; } } Object. defineProperty(myObject, ‘b‘, { get: function() { // 给 b 设置一个 getter return this.a * 2 }, enumerable: true // 确保 b 会出现在对象的属性列表中 }) myObject.a = 3; myObject.a; // 2 myObject.b; // 4
这里我们自定义的 getter 只会返回 2,所以 set 操作是没有意义的。为了让属性合理,通常来说 getter 和 setter 是成对出现的,只定义一个通常会产生意料之外的行为
var myObject = { get a() { // 给 a 定义一个 getter return this._a_; } set a(val) { this._a_ = val * 2; } } myObject.a = 2; myObject.a; // 4
在本例中,把赋值[[Put]]操作中的值 2 存储到了另一个变量 _a_ 中
你不知道的JS系列 ( 37 ) - Getter 和 Putter
原文:https://www.cnblogs.com/wzndkj/p/12571987.html