javascript - 在对象的原型上使用自定义 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"
解决方案
这样做可以接受吗?
是的,完全。使用 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"
它比在对象上定义属性更保守吗?
推荐阅读
- android - Android TWRP 不使用 ADB 闪烁;失败(远程:'未知命令')
- python-3.x - 另一个“fk_name '' is not a foreignkey to”问题 [Python/Django]
- visual-studio-2019 - 设备驱动程序不会安装在任何设备上,如果需要,请使用原始驱动程序。[安全证书]
- python - 如何使用多处理来并行化收集与给定条件匹配的项目的过滤功能?
- jquery - jQuery cookie 过期时会自行删除吗?
- css - Next.js 图片填写砌体列表
- javascript - 有没有办法有条件地在 React 中包含文件?
- python - 在cartopy上绘制问题
- python - Tensorflow 对象检测“使用 fn_output_signature 代替”警告
- node.js - 从 node.js 中的 API 数据中提取值