摘要:一全局范圍全局范圍中的將會指向全局對象,即。三作為對象的方法調用指向對象,即當前對象。四作為構造函數函數內部的指向創建的對象。八一個常見的坑事件綁定中回調函數的。如果中有使用,指向,即使的形式是,其中的依然指向,可用的方法解決這個問題。
一、全局范圍
this // window
全局范圍中的this將會指向全局對象,即window。
二、普通函數調用function foo(x) { this.x = x; } foo(3); (x /* or this.x */); // 3
this指向全局對象,即window。嚴格模式時,為undefined。
三、作為對象的方法調用var name = "foo"; var person = { name : "bar", hello : function(sth){ console.log(this.name + " says " + sth); } } person.hello("hello"); // bar says hello
this指向person對象,即當前對象。
四、作為構造函數var foo = new Bar(name) { this.name = name; this.age = 28; }
函數內部的this指向創建的對象。
五、閉包(內部函數)var name = "foo"; var person = { name : "bar", hello : function(sth){ var sayhello = function(sth) { console.log(this.name + " says " + sth); }; sayhello(sth) } } person.hello("hello"); // foo says hello
this.name為foo,所以this指向全局變量,即window。所以,一般將this作為變量保存下來。代碼如下:
var name = "foo"; var person = { name : "bar", hello : function(sth){ var self = this; var sayhello = function(sth) { console.log(self.name + " says " + sth); }; sayhello(sth) } } person.hello("hello"); // bar says hello六、使用call與apply設置this
fun.apply(thisArg, [argsArray]) fun.call(thisArg[, arg1[, arg2[, ...]]])
函數綁定到thisArg這個對象上使用,this就指向thisArg。
七、總結當函數作為對象的方法調用時,this指向該對象。
當函數作為淡出函數調用時,this指向全局對象(嚴格模式時,為undefined)。
構造函數中的this指向新創建的對象。
嵌套函數中的this不會繼承上層函數的this,如果需要,可以用一個變量保存上層函數的this。
一句話總結:如果在函數中使用了this,只有在該函數直接被某對象調用時,該this才指向該對象。
八、一個常見的坑事件綁定中回調函數的this。
addEventListener(elem, func, false);
如果func中有使用this,this指向elem,即使func的形式是obj.func,其中的this依然指向elem,可用var self = this;的方法解決這個問題。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79497.html
摘要:赫敏第三行的是在最外層執行,也就是在全局對象下。而在對象下聲明了屬性,就相當于羅恩,輸出的當然就是羅恩。之所以寫這篇文章,是為了我下一篇文章做鋪墊快速理解中和的用法敬請期待 this是 JS 這門語言的魅力之一——靈活方便又難以捉摸,即使是有經驗的程序員,如果不仔細也有可能搞錯,關于this的用法也成為許多公司的經典面試題。 如果你寫過 Java ,你可能接觸過this——一般指向當前...
摘要:其實它們都很簡單,但是在處理一些與相關的函數的時候,用來改變函數中的指向,卻是必不可少的工具,所以必須掌握好它們的用法。 關于javascript中的bind、call、apply等函數的用法 我GitHub上的菜鳥倉庫地址: 點擊跳轉查看其他相關文章 文章在我的博客上的地址: 點擊跳轉 ? ? ? ? 前面的文章已經說到this的指向了,那么這篇文章就要說一說和this相關的三個...
摘要:什么是函數的作用域函數作用域在中,作用域為可訪問變量,對象,函數的集合。函數作用域作用域在函數內修改。與函數又有什么關系呢對象是在運行時基于函數的執行環境綁定的。 什么是函數的作用域 函數作用域:在 JavaScript 中,作用域為可訪問變量,對象,函數的集合。JavaScript 函數作用域: 作用域在函數內修改。 this 與函數又有什么關系呢? this對象是在運行時基于函數的...
摘要:使用原型屬性屬性允許您向對象構造函數添加新屬性屬性還允許您向對象構造函數添加新方法更好的原型對象的教程 JavaScript對象原型所有JavaScript對象都從原型繼承屬性和方法。 js JavaScript 對象 function Person(first, last, age, eye) { this.firstName = fi...
摘要:不過,匿名函數的執行環境具有全局性,因此其通常指向。可行原因是這里的賦值實際上把匿名函數當作表達式處理了,表達式后面可以加括號。 this是Javascript語言的一個關鍵字。它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。比如, function test(){ this.x = 1; }隨著函數使用場合的不同,this的值會發生變化。有一個總的原則,那就是...
閱讀 2993·2021-10-19 11:46
閱讀 987·2021-08-03 14:03
閱讀 2946·2021-06-11 18:08
閱讀 2915·2019-08-29 13:52
閱讀 2764·2019-08-29 12:49
閱讀 490·2019-08-26 13:56
閱讀 932·2019-08-26 13:41
閱讀 855·2019-08-26 13:35