成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

(JavaScript) this的用法

vpants / 1568人閱讀

摘要:一全局范圍全局范圍中的將會指向全局對象,即。三作為對象的方法調(diào)用指向?qū)ο螅串斍皩ο?。四作為?gòu)造函數(shù)函數(shù)內(nèi)部的指向創(chuàng)建的對象。八一個常見的坑事件綁定中回調(diào)函數(shù)的。如果中有使用,指向,即使的形式是,其中的依然指向,可用的方法解決這個問題。

一、全局范圍
this // window

全局范圍中的this將會指向全局對象,即window

二、普通函數(shù)調(diào)用
function foo(x) {
  this.x = x;
}
foo(3);
(x /* or this.x */); // 3

this指向全局對象,即window。嚴格模式時,為undefined。

三、作為對象的方法調(diào)用
var name = "foo";  
var person = {  
  name : "bar",  
  hello : function(sth){  
    console.log(this.name + " says " + sth);  
    }  
}  
person.hello("hello"); // bar says hello

this指向person對象,即當前對象。

四、作為構(gòu)造函數(shù)
var foo = new Bar(name) {
  this.name = name;
  this.age = 28;
}

函數(shù)內(nèi)部的this指向創(chuàng)建的對象。

五、閉包(內(nèi)部函數(shù))
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.namefoo,所以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設(shè)置this
fun.apply(thisArg, [argsArray])
fun.call(thisArg[, arg1[, arg2[, ...]]])

函數(shù)綁定到thisArg這個對象上使用,this就指向thisArg。

七、總結(jié)

當函數(shù)作為對象的方法調(diào)用時,this指向該對象。

當函數(shù)作為淡出函數(shù)調(diào)用時,this指向全局對象(嚴格模式時,為undefined)。

構(gòu)造函數(shù)中的this指向新創(chuàng)建的對象。

嵌套函數(shù)中的this不會繼承上層函數(shù)的this,如果需要,可以用一個變量保存上層函數(shù)的this。

一句話總結(jié):如果在函數(shù)中使用了this,只有在該函數(shù)直接被某對象調(diào)用時,該this才指向該對象。

八、一個常見的坑

事件綁定中回調(diào)函數(shù)的this

addEventListener(elem, func, false);

如果func中有使用this,this指向elem,即使func的形式是obj.func,其中的this依然指向elem,可用var self = this;的方法解決這個問題。

參考:談談Javascript的this指針 (作者:Aaron)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79497.html

相關(guān)文章

  • 快速理解JavaScriptthis用法與陷阱

    摘要:赫敏第三行的是在最外層執(zhí)行,也就是在全局對象下。而在對象下聲明了屬性,就相當于羅恩,輸出的當然就是羅恩。之所以寫這篇文章,是為了我下一篇文章做鋪墊快速理解中和的用法敬請期待 this是 JS 這門語言的魅力之一——靈活方便又難以捉摸,即使是有經(jīng)驗的程序員,如果不仔細也有可能搞錯,關(guān)于this的用法也成為許多公司的經(jīng)典面試題。 如果你寫過 Java ,你可能接觸過this——一般指向當前...

    Kylin_Mountain 評論0 收藏0
  • 關(guān)于javascriptbind、call、apply等函數(shù)用法

    摘要:其實它們都很簡單,但是在處理一些與相關(guān)的函數(shù)的時候,用來改變函數(shù)中的指向,卻是必不可少的工具,所以必須掌握好它們的用法。 關(guān)于javascript中的bind、call、apply等函數(shù)的用法 我GitHub上的菜鳥倉庫地址: 點擊跳轉(zhuǎn)查看其他相關(guān)文章 文章在我的博客上的地址: 點擊跳轉(zhuǎn) ? ? ? ? 前面的文章已經(jīng)說到this的指向了,那么這篇文章就要說一說和this相關(guān)的三個...

    lordharrd 評論0 收藏0
  • JavaScript 函數(shù)作用域、執(zhí)行環(huán)境(this)、call、apply、bind 用法

    摘要:什么是函數(shù)的作用域函數(shù)作用域在中,作用域為可訪問變量,對象,函數(shù)的集合。函數(shù)作用域作用域在函數(shù)內(nèi)修改。與函數(shù)又有什么關(guān)系呢對象是在運行時基于函數(shù)的執(zhí)行環(huán)境綁定的。 什么是函數(shù)的作用域 函數(shù)作用域:在 JavaScript 中,作用域為可訪問變量,對象,函數(shù)的集合。JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。 this 與函數(shù)又有什么關(guān)系呢? this對象是在運行時基于函數(shù)的...

    1fe1se 評論0 收藏0
  • JavaScript prototype原型用法

    摘要:使用原型屬性屬性允許您向?qū)ο髽?gòu)造函數(shù)添加新屬性屬性還允許您向?qū)ο髽?gòu)造函數(shù)添加新方法更好的原型對象的教程 JavaScript對象原型所有JavaScript對象都從原型繼承屬性和方法。 js JavaScript 對象 function Person(first, last, age, eye) { this.firstName = fi...

    siberiawolf 評論0 收藏0
  • Javascriptthis用法

    摘要:不過,匿名函數(shù)的執(zhí)行環(huán)境具有全局性,因此其通常指向??尚性蚴沁@里的賦值實際上把匿名函數(shù)當作表達式處理了,表達式后面可以加括號。 this是Javascript語言的一個關(guān)鍵字。它代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用。比如,  function test(){    this.x = 1;  }隨著函數(shù)使用場合的不同,this的值會發(fā)生變化。有一個總的原則,那就是...

    ad6623 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<