assign(目标对象, 源对象1, 源对象2, 源对象3, ...)
const test1 = { a: 1, b: 2 };
const test2 = { b: 3, c: 4 };
const test3 = { c: 5, d: 6 };
const test4 = Object.assign(test1, test2, test3);
console.log(test1);
console.log(test2);
console.log(test3);
console.log(test4);
test4.a = 233;
console.log(test1, test4); // 修改 test4,test1也变化
test3.__proto__.e = 233;
// 其实就相当于在 Object.prototype 上挂载了 e
// 所以 test1、test2、test4 的原型上都会有 e
const v1 = 123;
const v2 = '123';
const v3 = true;
const v4 = function test() {};
const v5 = Object.assign({}, v1, v2, v3, v4);
console.log(v5);
关键点:
const r1 = new Number(123);
const r2 = new String('123');
const r3 = new Boolean(true);
const r4 = new Function(function test() {});
console.log({
r1, r2, r3, r4
});
[r1, r2, r3, r4].forEach(item => {
for (var key in item) {
console.log(key, item[key]);
}
});