ES6 对象的扩展
2023-09-27 14:24:29 时间
ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
function f(x, y) {
return {x, y};
}
// 等同于
function f(x, y) {
return {x: x, y: y};
}
f(1, 2) // Object {x: 1, y: 2}
除了属性简写,方法也可以简写。
const o = {
method() {
return "Hello!";
}
};
// 等同于
const o = {
method: function() {
return "Hello!";
}
};
函数的name属性,返回函数名。对象方法也是函数,因此也有name属性。
const person = {
sayName() {
console.log('hello!');
},
};
person.sayName.name // "sayName"
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
const target = { a: 1, b: 1 };
const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
Object.assign(SomeClass.prototype, {
someMethod(arg1, arg2) {
···
},
anotherMethod() {
···
}
});
// 等同于下面的写法
SomeClass.prototype.someMethod = function (arg1, arg2) {
···
};
SomeClass.prototype.anotherMethod = function () {
···
};
相关文章
- 将ES6的语法转为ES5(为了兼容 ES5) (Babel)
- es6 webpack转es5
- es6 - array for-chrome
- ES6新特性:let,解构赋值,模板字面量,箭头函数,reat参数,扩展运算符,symbol,迭代器,promise,Set,Map。新接口:assign()
- ES6基础-变量的解构赋值
- ES6 你是懂了,可你真的会用了吗?(这10点,检验你是否中招了)
- ES6+ Math 对象的扩展
- ES6+ 字符串的扩展
- ES6小技巧
- 浅析ES6对象相关方法的缘起及使用:Object.is()、Object.keys(),Object.values()、Object.getOwnPropertyDescriptors()和__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
- CommonJS模块与ES6模块的区别
- ES6之Object.assign()详解
- 深入理解ES6读书笔记9:数组扩展
- 1、ES6声明变量的方式