摘要:本文主要是自己學(xué)習(xí)時(shí)記錄的,僅供參考,如有錯(cuò)誤可幫忙提出,謝謝。
本文主要是自己學(xué)習(xí)時(shí)記錄的,僅供參考,如有錯(cuò)誤可幫忙提出,謝謝。
對(duì)象方法的調(diào)用:(當(dāng)一個(gè)函數(shù)作為一個(gè)對(duì)象的屬性時(shí),我們稱它為方法)
var name = "window"; var obj = { name: "obj", //箭頭函數(shù) sayName: () => { console.log(this); // window對(duì)象 console.log(this.name); // "window" }, // 普通函數(shù) getName: function(){ console.log(this); // obj對(duì)象 console.log(this.name); // "obj" } } obj.sayName(); obj.getName(); var obj_1 = {name: "obj_1"} obj.sayName.apply(obj_1) // window對(duì)象,"window"
正常的函數(shù)調(diào)用:
// 當(dāng)函數(shù)被當(dāng)做函數(shù)調(diào)用時(shí),this是綁定在window對(duì)象上面的,這是javaScript語(yǔ)言上設(shè)計(jì)的錯(cuò)誤 // 在ES6的箭頭函數(shù),糾正的以上的錯(cuò)誤,但是并沒(méi)有完全糾正錯(cuò)誤, //【箭頭函數(shù)中的this的綁定在執(zhí)行上下文的整個(gè)封閉函數(shù)的this,如果沒(méi)有封閉的函數(shù)將綁定到window上面】
//常見(jiàn)的調(diào)用 function m(){ console.log(this); // window對(duì)象 } m(); var n = () => { console.log(this); // window對(duì)象 } n(); //對(duì)象方法中函數(shù)的this var name = "window"; var obj = { name: "obj", sayName: function(){ console.log(this); // 復(fù)習(xí)一下,此處為obj對(duì)象 f(); function f(){ console.log(this); // window對(duì)象 console.log(this.name); // "window" } return function(){ console.log(this); // window對(duì)象 console.log(this.name); // "window" } } } obj.sayName()(); // 用箭頭函數(shù)看看this var name = "window"; var obj = { name: "obj", sayName: function(){ var f = () => { console.log(this); // obj對(duì)象 console.log(this.name); // "obj" } f(); return () => { console.log(this); // obj對(duì)象 console.log(this.name); // "obj" } } } obj.sayName()(); var obj_1 = {name: "kangkang"}; obj.sayName().apply(obj_1); //和上面輸出相同
構(gòu)造函數(shù)中的this:(構(gòu)造函數(shù)不能使用箭頭函數(shù),所以不考慮箭頭函數(shù))
// 構(gòu)造函數(shù)中的this指向新創(chuàng)建的對(duì)象本身
var Person = function(name){ this.name = name; } Person.prototype.getName = fucntion() { return this.name; } var obj = new Person("kangkang"); obj.getName(); // kangkang
bind/call/apply 改變this的指向這里不想詳細(xì)介紹
// 由于箭頭函數(shù)沒(méi)有自己的this,所以bind、call、apply方法對(duì)箭頭函數(shù)失效
待后續(xù)完善......
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93839.html
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...
摘要:閉包閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)當(dāng)某個(gè)函數(shù)被調(diào)用時(shí),會(huì)創(chuàng)建一個(gè)執(zhí)行環(huán)境及相應(yīng)的作用域鏈。要注意通過(guò)第句聲明的這個(gè)方法屬于構(gòu)造函數(shù)生成的對(duì)象,而不屬于構(gòu)造函數(shù)的變量對(duì)象,也就是說(shuō),并不存在于作用域鏈中。 看到評(píng)論里有仁兄建議我試試箭頭函數(shù),真是受寵若驚,本來(lái)寫(xiě)這篇文章也只是想記錄寫(xiě)要點(diǎn)給自己日后看的。今天早上看到一篇總結(jié)javascript中this的文章JavaScr...
摘要:原文鏈接原文作者你想知道的關(guān)于作用域的一切譯中有許多章節(jié)是關(guān)于的但是對(duì)于初學(xué)者來(lái)說(shuō)甚至是一些有經(jīng)驗(yàn)的開(kāi)發(fā)者這些有關(guān)作用域的章節(jié)既不直接也不容易理解這篇文章的目的就是為了幫助那些想更深一步學(xué)習(xí)了解作用域的開(kāi)發(fā)者尤其是當(dāng)他們聽(tīng)到一些關(guān)于作用域的 原文鏈接: Everything you wanted to know about JavaScript scope原文作者: Todd Mott...
摘要:不過(guò)匿名函數(shù)的執(zhí)行環(huán)境具有全局性,因此其對(duì)象通常指向。在閉包中使用對(duì)象可能會(huì)導(dǎo)致一些問(wèn)題。這個(gè)對(duì)象還包含一個(gè)方法它返回一個(gè)匿名函數(shù),而匿名函數(shù)又返回,這個(gè)匿名函數(shù)就是閉包。偽代碼過(guò)程在定義匿名函數(shù)之前,把對(duì)象賦值給了一個(gè)名叫的變量。 this對(duì)象 前言:最近在細(xì)讀Javascript高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書(shū)中很多地方翻譯的差強(qiáng)人意,所以用自己所理解的,嘗試解讀下。如有紕漏...
摘要:在中,當(dāng)使用關(guān)鍵字調(diào)用函數(shù)構(gòu)造函數(shù)時(shí),函數(shù)構(gòu)造函數(shù)中也有這個(gè)概念,但是它不是惟一的規(guī)則,而且常??梢砸脕?lái)自不同執(zhí)行上下文的不同對(duì)象。因此,我們使用調(diào)用函數(shù),可以看到這是對(duì)象,并且的屬性是正常的。 一直以來(lái),javascript里邊的this都是一個(gè)很難理解的東西,之前看的最多的就是阮一峰老師關(guān)于this的理解: http://www.ruanyifeng.com/blo... htt...
閱讀 3536·2021-09-27 13:35
閱讀 3575·2019-08-29 17:09
閱讀 2465·2019-08-26 11:30
閱讀 715·2019-08-26 10:32
閱讀 550·2019-08-26 10:23
閱讀 1209·2019-08-26 10:20
閱讀 3164·2019-08-23 15:26
閱讀 3575·2019-08-23 14:33