摘要:總是指向一個對象,而具體指向哪個對象是在運行時基于函數(shù)的執(zhí)行環(huán)境動態(tài)綁定的,而非函數(shù)被聲明時的環(huán)境。參數(shù)傳入?yún)?shù)的一個數(shù)組,參數(shù)個數(shù)是確定的。接收不確定參數(shù)第一個參數(shù)一個對象,用于指定的指向,默認不設置或者設置為的情況下指向的是。
this總是指向一個對象,而具體指向哪個對象是在運行時基于函數(shù)的執(zhí)行環(huán)境動態(tài)綁定的,而非函數(shù)被聲明時的環(huán)境。
this的指向大致可以分為以下四種:
◎ 作為對象的方法調用
◎ 作為普通函數(shù)調用
◎ 構造器調用
◎ Function.prototype.call或Function.prototype.apply調用
var obj={ myName:"sven", getName:function(){ return this.myName; } } console.log(obj.getName());//輸出:"sven" var getName2 = obj.getName; console.log(getName2());//輸出:"undefined"
分析:
驗證:
//設置全局變量 var myName = "Windows.name"; var obj={ myName:"sven", getName:function(){ return this.myName; } } console.log(obj.getName());//輸出:"sven" var getName2 = obj.getName; console.log(getName2());//輸出:"Windows.name"apply和call方法的用法:
apply(obj,[argument1,argument2,….]) 接收兩個參數(shù):【參數(shù)1】一個對象,用于指定this的指向,默認不設置或者設置為null的情況下指向的是window?!緟?shù)2】傳入?yún)?shù)的一個數(shù)組,參數(shù)個數(shù)是確定的。
call(obj,argument1,argument2,….) 接收不確定參數(shù):【第一個參數(shù)】一個對象,用于指定this的指向,默認不設置或者設置為null的情況下指向的是window?!竞竺娴膮?shù)】傳入的參數(shù),參數(shù)個數(shù)是不確定的。
代碼驗證:
接著上面的代碼:
局部變量不被銷毀的原因: 利用閉包實現(xiàn)局部變量不被銷毀:文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/91813.html
摘要:首先我們可以通過給目標函數(shù)指定作用域來簡單實現(xiàn)方法保存,即調用方法的目標函數(shù)考慮到函數(shù)柯里化的情況,我們可以構建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。而則會立即執(zhí)行函數(shù)。 bind 是返回對應函數(shù),便于稍后調用;apply 、call 則是立即調用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:不能應用下的等方法。首先我們可以通過給目標函數(shù)指定作用域來簡單實現(xiàn)方法保存,即調用方法的目標函數(shù)考慮到函數(shù)柯里化的情況,我們可以構建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。 bind 是返回對應函數(shù),便于稍后調用;apply 、call 則是立即調用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:和概覽我們要將歸為一類,單獨歸為一類三者的共同點是都可以指定和都是綁定在的原型上的,所以的實例都可以調用這三個方法至于為什么,看完這篇文章你就懂了如果你不懂什么是實例的話,請移步深入淺出面向對象和原型概念篇深入淺出面向對象和原型概念篇第一個 1.call/apply和bind概覽 我們要將call/apply歸為一類,bind單獨歸為一類 三者的共同點是都可以指定this call/...
摘要:和區(qū)別其實他們的作用是一樣的,只是傳遞的參數(shù)不一樣而已。接受個參數(shù),第一個參數(shù)指定了函數(shù)體內對象的指向,第二個參數(shù)為數(shù)組或者一個類數(shù)組??磦€栗子一個有意思的事在中,多次是無效的。而則會立即執(zhí)行函數(shù)。 背景 前兩天在做小程序的需求的時候用到bind的時候才想起自己對這三的東西的了解比較淺薄,這個時候用的時候就有點怕。時候還是要好好學習下,理解下怎么玩。 正文 先說call 和 apply...
摘要:如果連續(xù)呢結果會是什么結果還是第一個原因是,在中,多次是無效的。更深層次的原因,的實現(xiàn),相當于使用函數(shù)在內部包了一個,第二次相當于再包住第一次故第二次以后的是無法生效的。 this 1.其實js中的this沒那么難理解,當找不到this時記住一句話:誰調我,我就指誰!new 誰指誰 function text1(){ console.log(this); //指wind...
摘要:理解文章中已經比較全面的分析了在中的指向問題,用一句話來總結就是的指向一定是在執(zhí)行時決定的,指向被調用函數(shù)的對象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個新函數(shù)。這個新函數(shù)包裹了原函數(shù),并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結就是:this 的指向一定是在執(zhí)行時決定的,...
閱讀 2638·2021-09-24 10:29
閱讀 3972·2021-09-22 15:46
閱讀 2657·2021-09-04 16:41
閱讀 3054·2019-08-30 15:53
閱讀 1347·2019-08-30 14:24
閱讀 3145·2019-08-30 13:19
閱讀 2249·2019-08-29 14:17
閱讀 3629·2019-08-29 12:55