首页 > 解决方案 > 在对象的原型上使用自定义 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"

标签: javascript

解决方案


这样做可以接受吗?

是的,完全。使用 ES6class语法可以更轻松地在原型对象上定义访问器属性,这很常见。

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"

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

是的,绝对


推荐阅读