我定义了一个对象,该对象将在代码运行时实例化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"
答案 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"
与在对象上定义属性相比,它在存储上是否更保守?