深入理解ES6之对象

深入理解ES6之var,let,const区别
深入理解ES6之函数
深入理解ES6之类
深入理解ES6之解构
深入理解ES6之Promise与异步编程
深入理解ES6之模块

一:对象的属性

1:属性速记法

//之前
function createPerson(name,age){
  return {
     name:name,
     age:age
  }
}
var person = {
    name="hahah",
    sayName:function(){
 }
}

//ES6
function createPerson(name,age){
  return {
     name,
     age
  }
}
var person = {
    name="hahah",
    sayName(){
 }
}

2:属性可以通过.或者[]引用内部属性
[]方括号允许你将变量或者字符串字面量指定为属性名

var person = {};
var lastName = "last name";
console.log(person[lastName]);

3:重复属性覆盖,后一个会覆盖前一个同名属性
4:属性枚举时定义了规则
所有的数字类型键,按照升序排列;所有的字符串类型键,按照添加到对象的顺序排列;所有的符号类型,按照添加到对象的顺序排列;

var obj={
a:1,
0:1,
c:1,
2:1,
b:1,
1:1
}
obj.d=1;
console.log(Object.getOwnPropertyNames(obj).join(""));//"012acbd"

二:对象的方法

1:方法定义

let person ={
//方法
getGreeting(){
   return "hello"
}

//并非方法
function shareGreeting(){
    return "Hi";
 }
}
//方法里面可以使用super 非方法不能使用super

2:新增方法
Object.is()比较两个对象值是否相等;
Object.assign()混入用于一个对象从另一个对象中接收属性方法,但是并未在在接收者上创建访问器属性,供应者拥有访问器属性。

三:原型与super

1:原型可以改变
ES6通过添加Object.setPortotypeOf()方法可以运行修改任意指定对象的原型。

let person = {
  getGreeting(){
    return "hello"
  }
}
let dog = {
  getGreeting(){
    return "woof"
  }
}

let friend = Object.create(person);
console.log(friend.getGreeting())// "hello"

Object.setPrototypeOf(friend,dog);
console.log(friend.getGreeting())// "woof"
console.log(Object.getPrototypeOf(friend)===dog); // true

2:super关键字
super关键字可以调用原型上面的方法,所调用的方法会被设置好内部的this绑定,以自动使用this值来进行工作。

猜你喜欢

转载自blog.csdn.net/u014041033/article/details/79483876