是否可以在对象的原型上使用自定义 getter 定义属性?



>我定义了一个对象,该对象将在代码运行时实例化 1000 个时间。 对象的属性之一是计算值。 我正在使用带有Object.defineProperty的自定义getter。 我看到的所有示例都定义了对象本身的属性。

但是,如果属性是使用函数派生的,那么在对象的原型上定义属性是否会节省更多内存? 我一直找不到这样的例子。

下面的代码示例似乎有效,但这样做可以接受吗? 它是否比在对象上定义属性更保守?

var Person=function(first,last)
{
    this.firstName=first
    this.lastName=last
}
Object.defineProperty(Person.prototype, "fullName", { get: function() { return `${this.firstName} ${this.lastName}`} })
var a =new Person("Jane","Doe")
console.log(a.fullName)  //"Jane Doe"

这样做可以接受吗?

是的,完全。使用 ES6 class语法使得在原型对象上定义访问器属性变得更加容易,这是很常见的。

class Person {
  constructor(first, last) {
    this.firstName = first;
    this.lastName = last;
  }
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}    
var a = new Person("Jane", "Doe");
console.log(a.fullName)  //"Jane Doe"

它是否比在对象上定义属性更保守?

是的,当然。

最新更新