ES6中对象方法简写的注意点

  1. 对象方法的几种写法
const obj={
    init() {
    },
    init2: () => {
    },
    init3: function() {
    },
}
  1. 和普通函数/箭头函数的区别
    本来我以为简写方法相当于xxx:function(){}这种,但在研究jQuery源码时,发现简写不能创建实例.就是说不能new obj.init(),提示这不是一个constructor.要改成普通函数才可以.又试了试箭头函数,发现箭头函数和这种简写方式的this指向又不同. 这种简写方式既不同于普通函数又和箭头函数有区别. 区别如下:
const obj = {
    age: 12,
    // 不可以new,不是constructor
    init() {
        console.log(this.age); // 指向obj
        console.log([...arguments]); //可以
    },
    // 不可以new,不是constructor
    init2: () => {
        console.log(this.age); // 报错,指向window
        console.log([...arguments]); //报错,arguments not defined
    },
    // 可以new
    init3: function() {
        console.log(this.age); //指向obj
        console.log([...arguments]); //可以
    },
};

posted @ 2020-11-08 16:51  salvatorewang  阅读(181)  评论(0)    收藏  举报