摘要:從規范中理解本以為對中的已經很熟練了,再看完冴羽的博客后,才發現自己對規范知之甚少,原來我都是根據經驗在判斷,這篇文章會從最底層的規范上去介紹的判斷。本文已同步到個人博客從規范中理解,感謝鼓勵。
從 ES 規范 中理解 this
本以為對 JS 中的 this 已經很熟練了,再看完冴羽的博客后,才發現自己對 ES 規范知之甚少,原來我都是根據經驗在判斷 this,這篇文章會從最底層的 ES 規范上去介紹 this 的判斷。
本文已同步到個人博客從 ES 規范 中理解 this,感謝鼓勵。
一道測試題引發的思考第一次做這道題時,只對了第一題。。
var value = 1; var foo = { value: 2, bar: function() { return this.value; } }; //示例1 console.log(foo.bar()); //示例2 console.log((foo.bar)()); //示例3 console.log((foo.bar = foo.bar)()); //示例4 console.log((false || foo.bar)()); //示例5 console.log((foo.bar, foo.bar)());
先想一想這道題的答案,然后解釋一下原因。
規范文檔要徹底弄明白上面的測試題,還得看規范文檔
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99306.html
摘要:有三個重要組成部分和。參考小結函數中的是由調用函數的方式決定的。構造函數中的當構造函數通過操作符來調用時,表示正在創建的對象。情況沒有明確作用對象的情況下,通常為全局對象例如函數的回調函數,它的就是全局對象。 一. this的來源 this是JavaScript的關鍵字,它最初應該是從Java、C++等面向對象的語言中借鑒來的。 比如,在Java中沒有函數只有方法,this只能用在類的...
摘要:簡單的函數調用顯而易見,一直用調用函數將會非常煩人。規范說幾乎總是被傳遞,但不在嚴格模式下時被調用函數應該將其更改為全局對象。實際上,規范有一個和都使用的原語內部稱為。 過去很多年里,我看到過太多關于JavaScript函數調用的混淆。尤其是,很多人抱怨函數調用中this的語義令人困惑。在我看來,通過理解核心函數調用原語,然后將其他所有調用函數的方法視為在原語之上的語法糖,如此便可澄清...
摘要:本文總結了的各種情況,并從規范的角度探討了的具體實現,希望對大家理解有所幫助。規范規范里面詳細介紹了的實現細節,通過閱讀規范,我們可以更準確的理解上述四種情況到底是怎么回事。由于本人能力有限,如有理解錯誤的地方還望指出。 this是面向對象編程中的一個概念,它一般指向當前方法調用所在的對象,這一點在java、c++這類比較嚴格的面向對象編程語言里是非常明確的。但是在javascript...
摘要:目前主流的模塊規范模塊通用模塊如果你在文件頭部看到這樣的代碼,那么這個文件使用的就是規范實際上就是全局變量這三種風格的結合這段代碼就是對當前運行環境的判斷,如果是環境就是使用規范,如果不是就判斷是否為環境,最后導出全局變量有了后我們的代碼和 目前主流的模塊規范 UMD CommonJs es6 module umd 模塊(通用模塊) (function (global, facto...
摘要:在規范中,引入了的概念。使用中的聲明一個類,是非常簡單的事。中面向對象實例化的背后原理,實際上就是原型對象。與區別理解上述原理后,還需要注意與屬性的區別。實際上,在中,類繼承的本質依舊是原型對象。 在 ES6 規范中,引入了 class 的概念。使得 JS 開發者終于告別了,直接使用原型對象模仿面向對象中的類和類繼承時代。 但是JS 中并沒有一個真正的 class 原始類型, clas...
閱讀 1529·2021-11-22 09:34
閱讀 3329·2021-09-29 09:35
閱讀 576·2021-09-04 16:40
閱讀 2919·2019-08-30 15:53
閱讀 2594·2019-08-30 15:44
閱讀 2591·2019-08-30 14:10
閱讀 1335·2019-08-29 18:43
閱讀 2215·2019-08-29 13:26