上篇説到传统函式This指向基本原则:呼叫时前面的物件是谁,和怎麽定义无关,但箭头函式的This指向,完全不是这样运作的。
const arr = [1,2,3,4,5];
const filterArr = arr.filter(function(item){
return item % 2; //除2的余数 为真值取出来
});
const arr = [1,2,3,4,5];
const filterArr = arr.filter(item => item % 2 );
console.log(filterArr);
区别在於以下几点:
补充
:箭头函式自带return
功能,但是前提是要把{}拿掉才会生效。再来一段范例:
var name = '全域';
const obj = {
name: '物件',
callName: function () {
console.log(this.name); //物件
setTimeout(function () {
console.log(this.name); //全域
console.log(this); //windows
}, 100);
},
};
obj.callName();
setTimeout里面的callback function this.name指向会是全域,this 则是指向windows。
接下来改成箭头函式:
var name = '全域';
const obj = {
name: '物件',
callName: function () {
console.log(this.name); //物件
setTimeout(() => {
console.log(this.name); //物件
console.log(this); //obj
}, 100);
},
};
obj.callName();
因为箭头函式没有自己的This
,所以callback function This指向会变成跟外部函式作用域
的This指向ㄧ样。
假如箭头函式外部没有函式呢?
var name = '全域';
const obj = {
name: '物件',
callName: () => {
console.log(this.name)
}
};
obj.callName();
外部找不到函式,箭头函式This就会指向为全域。
传统函式This指向是看呼叫函式前面的物件
。
箭头函式没有自己的This
,如果外部有函式,作用域This就会跟外部函式一样,如果没有外部无函式This指向则是全域。
setTimeout
里面的callback function this指向则会是windows
。
明天要来讲解最後一篇JavaScript的观念篇,其他观念则会放在其他篇小章节里,之後就会开始Vue
的篇章,敬请期待,祝大家中秋节快乐!
>>: DAY 7:Fan-Out Fan-In Pattern,看吧世界!这就是多人解决的力量!
你可能精心写了一段广告,但最後发现被 Google 拒登,但别担心,这个情况,也许每个人都曾经历过。...
上回说到 Fat Model 的逻辑散落在各处,那这回就要来说说散落在哪、以及造成这种现象的原因。 ...
#odoo #开源系统 #数位赋能 #E化自主 昨天我们讨论了销售模组的运作,我们接下来进入到采购模...
浏览了超过 50 篇文章,直到找到这篇影音教学,真的是非常符合目前的需求~! 观看影片後也能轻松上手...
前言 在程序历史的进程中,就像是动物历史一样,是在漫漫的演变当中前进。动物会根据环境最适者生存,程序...