摘要:允許使用箭頭定義函數(shù)。等同于如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào)。匿名函數(shù)的指向。
ES6允許使用“箭頭”(=>)定義函數(shù)。
var f = v => v;
等同于:
var f = function(v) { return v; };
如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。
var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1 + num2; }; //若你想使用標(biāo)準(zhǔn)的函數(shù)體,或者函數(shù)體內(nèi)可能有更多的語句要執(zhí)行,則要用大括號(hào)將函數(shù)體括起來,并明確定義返回值。 var sum = (num1, num2) => { return num1 + num2; } //如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào)。 var getTempItem = id => ({ id: id, name: "Temp" }); //以上例子出處 https://www.cnblogs.com/huansky/p/5684867.html
至此,我們已經(jīng)理解怎么用它了;那么它跟普通的function定義函數(shù)最大的區(qū)別是什么?
箭頭函數(shù)中的 this箭頭函數(shù) 中的 this,指向的是它定義時(shí)所在的this;實(shí)際上,箭頭函數(shù)沒有自己的this;它的作用域是詞法作用域,會(huì)跟著作用域鏈找到最近的一個(gè)this引用;
var name = 456 var obj = { name:"123", fn:function () { console.log(this.name);//123 對(duì)象的屬性方法中的this 指向?qū)ο蟆? setTimeout(function () { console.log(this.name)//456 匿名函數(shù)的 this 指向window。 },1000); setTimeout(()=>{console.log(this.name)},2000);//123 找到this是指向obj的; obj.do(()=>{console.log(this)});//obj對(duì)象 找到定義時(shí)的this是指向obj的(即obj.fn 的this); }, do:function (fn) { fn(); } }; obj.fn();
匿名函數(shù)的 this 始終是指向window 的
var obj = { fn:function () { (function () { console.log(this); //window })(); console.log(this); //obj } } obj.fn();普通函數(shù)的this 可以這樣概括
(來自知乎)
this用于繼承函數(shù)執(zhí)行時(shí),this 總是指向調(diào)用該函數(shù)的對(duì)象,規(guī)則可以簡(jiǎn)單概括如下:
有對(duì)象就指向調(diào)用對(duì)象
沒調(diào)用對(duì)象就指向全局對(duì)象
用new構(gòu)造就指向新對(duì)象
通過 apply 或 call 或 bind 可以改變this的指向
其實(shí)也就是根據(jù)點(diǎn)的左邊是什么東西來判斷。
方法 call ,可以改變執(zhí)行上下文環(huán)境。通過call去拿到其他對(duì)象的方法,繼承為自己的方法;
function superClass () { this.a = 1; this.print = function () { console.log(this.a); } } function subClass () { superClass.call(this); this.print(); } subClass(); // 1
subClass通過call方法,繼承了superClass的print方法和a變量,同時(shí)subClass還可以擴(kuò)展自己的其他方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/89784.html
摘要:每次被執(zhí)行時(shí),和被傳入,這個(gè)根據(jù)進(jìn)行累加或者是自身消減,英文原意,進(jìn)而返回最新的。 之前的一篇文章:從一道面試題,到我可能看了假源碼討論了bind方法的各種進(jìn)階Pollyfill,今天再分享一個(gè)有意思的題目。 從解這道題目出發(fā),我會(huì)談到數(shù)組的Reduce方法,ES6特性和Redux數(shù)據(jù)流框架中Reducer的命名等等。一道典型的題目,卻如唐代詩(shī)人章碣《對(duì)月》詩(shī)中所云:別有洞天三十六,水...
摘要:讓你的代碼更簡(jiǎn)短,更整潔,更易讀的小技巧寫在文章前面這篇文章翻譯自文章就代碼整潔方面對(duì)進(jìn)行了總結(jié)。如果你正在使用的代碼使用的語法,這個(gè)是你需要注意的事情。更多還提供了我們很多很多其他的方式來使我們的代碼更簡(jiǎn)潔,更易讀,以及更穩(wěn)定。 讓你的代碼更簡(jiǎn)短,更整潔,更易讀的ES6小技巧 寫在文章前面 這篇文章翻譯自ES6 tips and tricks to make your code cl...
在JavaScript中‘this’關(guān)鍵字是一個(gè)非常重要的概念,我們雖然知道它重要,但它也十分的晦澀難懂,也給我們學(xué)習(xí)造成不小的困擾?! ∈裁词?#39;this'關(guān)鍵字 'this'關(guān)鍵字是為每個(gè)執(zhí)行上下文(每個(gè)函數(shù))創(chuàng)建的一個(gè)特殊變量;所以一般來說,在使用'this'關(guān)鍵字的函數(shù)中,'this'永遠(yuǎn)是取其所有者的值。總結(jié)一句話是該函...
閱讀 2437·2021-11-24 10:27
閱讀 3658·2019-08-30 15:55
閱讀 3428·2019-08-30 15:53
閱讀 2408·2019-08-29 17:27
閱讀 1502·2019-08-26 13:47
閱讀 3621·2019-08-26 10:28
閱讀 989·2019-08-23 15:59
閱讀 2933·2019-08-23 15:19