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