JS创建对象的⼏种⽅式
不少⽂章都是从设计模式的⾓度去回答,并没有从 JS 语⾔的⾓度出发。⽬前,JS 这门语⾔,创建对象不外乎以下⼏种⽅式:
对象字⾯量
对象字⾯量也是我们平时写代码最常使⽤的⽅式,⽤⼀附含有键值对的⼤括号去定义我们的对象及其内部属性
let obj = {
key: 'value'
}
当然我们也可以直接⽤“{}”去定义⼀个空对象
使⽤构造对象
如果我们的对象存在⼀些公共的属性,那么使⽤对象字⾯量去定义就会⽐较浪费空间。
因此我们要使⽤构造对象,不论是构造函数语法,还是 ES6 的 class 语法,JS 本⾝是都是通过原型对象和原型链来实现属性的共享的,本质基本相同。
// 构造函数
function obj{
js原型和原型链的理解this.ownKey = 'ownValue'
}
obj.prototype.key = 'value'
// class语法
class Obj{
key = 'value'
constructor(){
this.ownKey = 'ownValue'
}
}
如果熟悉 vue,对于 defineProperties ⽅法应该是⽐较了解了,可以基于添加⼀些属性描述符,可以让我们以更为细致地操作这个对象。
let protoObj = {
key: 'value'
};
let obj = ate(protoObj, {
foo: { value: 'bar' }
});