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

时间:2019-01-29 18:42:40

标签: javascript

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

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

下面的代码示例似乎可以正常工作,但是这样做可以接受吗?它比在对象上定义属性更具存储保守性吗?

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"

1 个答案:

答案 0 :(得分:2)

  

这样做是否可以接受?

是的,完全是。使用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"
  

与在对象上定义属性相比,它在存储上是否更保守?

Yes, definitely