摘要:概述一個函數中的指向是由調用這個函數的環境來決定的。實例參數參數和一樣,不同的是和在調用函數之后會立即執行,而方法調用并改變函數運行時上下文后,返回一個新的函數,供我們需要時再調用。
概述
一個函數中this的指向是由調用這個函數的環境來決定的。
全局
var a = 1; function b(){ var a = 2; console.log(this.a); }; b(); //1
var value = 3; function b(){ console.log(this.value); }; b();//3 此時的b函數的環境是全局的
局部
var a = 1; var c = {a:3}; c.b = function(){ var a = 2; console.log(this.a); }; c.b();//3 //立即執行函數 由于是賦值,所以只執行了右邊的函數 var a = 1; var c = {a:3}; (c.b = function(){ var a = 2; console.log(this.a); })();//1apply、call 和 bind 改變this指向
apply
參數
只能傳兩個參數,第一個參數a是改變this指向的結果對象(在非嚴格模式下,第一個參數為null或者undefined時會自動替換為指向全局對象),第二個參數是傳給a的參數集合(arguments[數組或類數組]);
實例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; b.apply(c);//3 undefined undefined b.apply();//1 undefined undefined b.apply(c,[5,6]);// 3 5 6
call
參數
第一個參數和apply()的第一個參數一樣,不同的是apply()后面是接收一個數組或類數組,call()后面是是接收的參數列表。
實例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; b.call(c);//3 undefined undefined b.call();//1 undefined undefined b.call(c,5,6);// 3 5 6
bind
參數
參數和call一樣,不同的是 call()和apply()在調用函數之后會立即執行,而bind()方法調用并改變函數運行時上下文后,返回一個新的函數,供我們需要時再調用。
實例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; var b1 = b.bind(c); var b2 =b.bind(); var b3 =b.bind(c,5,6); b1();//3 undefined undefined b2();//1 undefined undefined b3()// 3 5 6
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/109526.html
摘要:目錄函數的聲明函數的屬性和方法函數的作用域閉包知識點小結關于函數,可以從以下個方面去理解首先,數據類型上看函數在中是一種數據類型,是對象的一種其次,從功能上看函數本質上是一段反復調用的代碼塊最后,從地位上看函數在中和其他基本數據類型一樣,可 目錄 1.函數的聲明 2.函數的屬性和方法 3.函數的作用域 4.閉包知識點 5.小結 關于函數,可以從以下3個方面去理解:首先,數據類型上看:...
摘要:一是什么函數的內部屬性,引用的是函數據以執行的環境對象。函數做為節點事件調用時指向節點本身做為構造函數實力化方法時指向實例對象箭頭函數里的普通函數,由于閉包函數是執行的,所以指向箭頭函數的指向函數創建時的作用域。 一、this是什么? 函數的內部屬性,this引用的是函數據以執行的環境對象。也就是說函數的this會指向調用函數的執行環境。 function a(){ retur...
摘要:它們有明確的和成員函數的定義,只有的實例才能調用這個的成員函數。用和調用函數里用和來指定函數調用的,即指針的指向。同樣,對于一個后的函數使用或者,也無法改變它的執行,原理和上面是一樣的。 函數里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數的執行都有一個上下文(context),也就是JavaScri...
摘要:于是決定寫個歸納。如果懂了,那么下面的例子也就會做了已知調用函數的對象是,所以指向,即。相當于在全局作用域聲明了變量,并且賦值。實際上,調用函數的是關鍵字。使用來調用函數,即函數的構造調用時,我們會構造一個新對象,并把它綁定到調用中的上。 對this的理解,我一直都是用一句話概括:誰調用它,它就指向誰。 好像也沒有什么問題,但仔細看了這本書和網上一些文章后,發現this的原理還挺講究的...
摘要:執行完以后,將該匿名函數賦值給。上述代碼其實等價于執行如下的代碼,函數回調場景基本原理可以看到,把一個定義有關鍵字的函數作為其它函數的回調函數,是危險的,因為在運行期會被重新賦值,上述例子很直觀的描述了這一點,之所以報錯,是因為指向了。 前言 看過[阮一峰]()的關于 this 的教程,講了很多比較好的例子,但沒有對其本質的東西解釋清楚,而且部分例證存在問題;于是,打算重寫本章節,從t...
閱讀 1522·2021-11-24 09:38
閱讀 3374·2021-11-18 10:02
閱讀 3262·2021-09-22 15:29
閱讀 2945·2021-09-22 15:15
閱讀 1047·2021-09-13 10:25
閱讀 1860·2021-08-17 10:13
閱讀 1996·2021-08-04 11:13
閱讀 1981·2019-08-30 15:54