- 对象方法的几种写法
const obj={
init() {
},
init2: () => {
},
init3: function() {
},
}
- 和普通函数/箭头函数的区别
本来我以为简写方法相当于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]); //可以
},
};