Object
属性的类型
数据属性
let person = {};
Object.defineProperty(person, "name", {
configurable: false,
value: "Nicholas"
});
console.log(person.name); // "Nicholas"
delete person.name; //报错
console.log(person.name); // "Nicholas"访问器属性
let book = {};
Object.defineProperties(book, {
year_: {
value: 2017,
// get: function () { // 报错,数据属性不能和访问器属性同时使用
// return this.edition;
// },
},
edition: {
value: 1
},
year: {
get: function () {
return this.year_;
},
set: function (newValue) {
if (newValue > 2017) {
this.year_ = newValue;
this.edition += newValue - 2017;
}
}
}
})
console.log(Object.getOwnPropertyDescriptors(book));
// {
// edition: {
// configurable: false,
// enumerable: false,
// value: 1,
// writable: false
// },
// year: {
// configurable: false,
// enumerable: false,
// get: f(),
// set: f(newValue),
// },
// year_: {
// configurable: false,
// enumerable: false,
// value: 2017,
// writable: false
// }
// }
const dest = {
set a(val) {
console.log(`Invoked dest setter with param ${ val }`);
}
};
const src = {
get a() {
console.log('Invoked src getter');
return 'foo';
}
};
Object.assign(dest, src);
console.log(dest);
console.log(src.a); 对象解构
嵌套解构
参数上下文匹配
创建对象
工厂模式
构造函数模式
Object.keys() vs Object.getOwnPropertyNames()
理解原型
原型的动态性

原型的问题
继承
原型链

默认原型

原型继承
寄生式继承
寄生式组合继承
Object.fromEntries()
Last updated
