[ES6] 16. Object Enhancements

Define object:


var color = "blue";
var speed = 120;

var car = {color, speed};

console.log(car.color);  // blue
console.log(car.speed);  // 120

in ES5:

var car = {color: color, speed: speed};

works with function:


var color = "blue";
var speed = 120;
function go(){
    console.log("start");
}

var car = {color, speed, go};

console.log(car.color); //blue
console.log(car.speed); //120
car.go(); // start

define function inside object:


var color = "blue";
var speed = 120;

var car = {
    color,
    speed,
    go(){
        console.log("start");
    }
};

console.log(car.color); //blue
console.log(car.speed); //120
car.go(); // start

in ES5:

var car = {
    color,
    speed,
    go: function(){
        console.log("start");
    }
};

get computed property:


var color = "blue";
var speed = 120;

var car = {
    color,
    speed,
    ["go"]: function(){
        console.log("start");
    }
};

console.log(car.color); //blue
console.log(car.speed); //120
car.go(); // start

The same as:

car["go"](); // start

string concatenation or evaluation:


var color = "blue";
var speed = 120;
var drive = "go";
var car = {
    color,
    speed,
    [drive]: function(){
        console.log("start");
    }
};

console.log(car.color); //blue
console.log(car.speed); //120
car.go(); // start
car["go"](); // start
时间: 2024-10-09 16:51:59

[ES6] 16. Object Enhancements的相关文章

[ES6] ES6 Parameter Object Destructuring with Required Values

Not only can you provide default values when using ES6 parameter object destructuring, but you can also require the presence of certain properties. function ajax({ type = "get", url = requiredParameter("url"), data = {}, success = requ

ES6之Object.assign()详解

译者按: 这篇博客将介绍ES6新增的Object.assign()方法. 原文: ECMAScript 6: merging objects via Object.assign() 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 将A对象的属性复制给B对象,这是JavaScript编程中很常见的操作.这篇博客将介绍ES6的Object.assign()属性,可以用于对象复制. 在JavaScript生态系统中,对象复制有另外一个术语:

ES6中Object.assign() 方法

1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var target = {a: 0}; var source1 = {b: 1}; var source2 = {c: 2}; Object.assign(target, source1, source2); console.log(target); // 输出 {a: 0, b: 1, c: 2} 1-1 如果目标对象与源对象有同名属性,或多个源对象有同名

纯原生仿ES6的Object.assign,实现深度合并对象

源码: function isObj(x){ var type = typeof x; return x !== null && (type === 'object' || type === 'function'); } var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(va

ES6中Object.assign()和Object.create()

Object.assign() 语法:Object.assing(target,…sources) 一.合并对象 const first = { name: "Bob" }; const last = { lastName: "Smith" }; let person = Object.assign(first, last); console.log(person);/*{ name: 'Bob', lastName: 'Smith' }*/ 二.克隆对象 cons

ES6的Object.assign()基本用法

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} Object.assign  方法的第一个参数是目标对象,后面的参数都是源对象. 注意:如果目标对象与源

浅谈ES6的Object.assign()浅拷贝

注意: 1.Object.assign() 只是一级属性复制,比浅拷贝多深拷贝了一层而已.用的时候,还是要注意这个问题的. 2.简单实现深拷贝的方法,当然,有一定限制,如下:JSON.parse(JSON.stringify());思路就是将一个对象转成json字符串,然后又将字符串转回对象. Object.assign()方法 特点:浅拷贝.对象属性的合并 代码如下: var nObj = Object.assign({},obj,obj1); 解析:花括号叫目标对象,后面的obj.obj1是

【ES6】对象的新功能与解构赋值

ES6 通过字面量语法扩展.新增方法.改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程. 一.字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始值可以简写,并可以使用可计算的属性名称.对象方法的定义消除了冒号和 function 关键字,示例如下: // Demo1 var value = "name", age = 18 var person = { age, // age: age ['my' + value]: 'Jenny

es5继承和es6类和继承

es6新增关键字class,代表类,其实相当于代替了es5的构造函数 通过构造函数可以创建一个对象实例,那么通过class也可以创建一个对象实列 /* es5 创建一个person 构造函数 */ function person (name,age) { this.name = name this.age = age } /* 定义原型链上的方法sayholle */ /* 为什么要将方法定义在原型上,定义在原型上的方法,所有的实例对象都共享 不会出现没实列一个对象都重新创建一个这个方法 */