国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript中對(duì)this深入了解

April / 3335人閱讀

摘要:但是有一個(gè)總的原則,那就是指的是調(diào)用函數(shù)的那個(gè)對(duì)象。作為構(gòu)造函數(shù)調(diào)用如果在一個(gè)函數(shù)前面帶上來(lái)調(diào)用,那么背地里將會(huì)創(chuàng)建一個(gè)鏈接到該函數(shù)的成員的新對(duì)象,同時(shí)會(huì)被綁定到那個(gè)新對(duì)象上。使用或調(diào)用方法讓我們構(gòu)建一個(gè)參數(shù)數(shù)組傳遞給調(diào)用函數(shù)。

讓我們深入探索一下this的具體用法 只有了解this用法才算真正入門了

首先來(lái)聊聊:what"this?
this是Javascript語(yǔ)言的一個(gè)關(guān)鍵字。
它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能在函數(shù)內(nèi)部使用。隨著函數(shù)使用場(chǎng)合的不同,this的值會(huì)發(fā)生變化。但是有一個(gè)總的原則,那就是this指的是調(diào)用函數(shù)的那個(gè)對(duì)象。
This 被分為三種情況:全局對(duì)象、當(dāng)前對(duì)象或者任意對(duì)象;判斷處于那種情況,這完全取決于函數(shù)的調(diào)用方式
JavaScript 中函數(shù)的調(diào)用有以下幾種方式:

作為函數(shù)調(diào)用

作為對(duì)象方法調(diào)用

作為構(gòu)造函數(shù)調(diào)用

使用 apply 或 call 調(diào)用

“我要問(wèn)的是this!你咋給我講起函數(shù)調(diào)用來(lái)了?要暈了!!!”

別急!且聽(tīng)我慢慢道來(lái):

作為函數(shù)調(diào)用

這是我們最常用的方法,這種調(diào)用方式屬于全局調(diào)用!以此模式調(diào)用函數(shù)時(shí),
this被綁定到全局對(duì)象。(什么?全局變量,難道它是一輛公交車?)

先來(lái)個(gè)干貨
  function example(){ 
    this.n = "hello world !";   
    console.log(this.n); 
    console.log(this);  
  }   
    example();

調(diào)用 example(); 時(shí),輸出了 ‘hello world !’ 還有 Window;
什么,還不信?行,再來(lái)個(gè)更猛的

var n = "hello world !";  
function example(){ 
  this.n = 0;
} 
example(); 
console.log(n); 

果然是一輛公交車?。。?/strong>

作為對(duì)象方法調(diào)用

當(dāng)一個(gè)函數(shù)被保存為對(duì)象的一個(gè)屬性時(shí),我們稱它為一個(gè)方法。當(dāng)一個(gè)方法被調(diào)用,this被綁定到該對(duì)象。

var name="A";
var student = { 
  name:"C", 
  showName:function(){ 
    console.log(this.name); 
  } 
} 
  dogs.showName(); //輸出 C

  var boyName = student.showName(); 

  boyName(); //輸出 A

當(dāng)執(zhí)行 dogs.showName(); 時(shí)輸出 C ,說(shuō)明這個(gè)時(shí)候this指向的是student這個(gè)對(duì)象的;當(dāng)我們把student.showName();賦給boyName時(shí),showName() 是做什么用的,很顯然,輸出它函數(shù)的執(zhí)行環(huán)境所指向?qū)ο蟮膎ame,而此時(shí)boyName 變量相當(dāng)于 Window 對(duì)象的一個(gè)屬性,因此 boyName() 執(zhí)行的時(shí)候相當(dāng)于 window.boyName(),所以 this 關(guān)鍵字指向 window;所以就會(huì)輸出 A 。

作為構(gòu)造函數(shù)調(diào)用

如果在一個(gè)函數(shù)前面帶上new來(lái)調(diào)用,那么背地里將會(huì)創(chuàng)建一個(gè)鏈接到該函數(shù)的prototype成員的新對(duì)象,同時(shí)this會(huì)被綁定到那個(gè)新對(duì)象上。

  function example(){   
     this.n = "hello world !";  
  }  
   var other = new example();  
   console.log(other.n); 

從運(yùn)行結(jié)果可以看出:
我們?yōu)閑xample這個(gè)函數(shù)new(構(gòu)造)了一個(gè)新的對(duì)象 other,那么 this 就會(huì)指向 other 這個(gè)對(duì)象,所以就會(huì)輸出 ‘hello world !’。

使用 apply 或 call 調(diào)用

apply 方法讓我們構(gòu)建一個(gè)參數(shù)數(shù)組傳遞給調(diào)用函數(shù)。他允許我們選擇this值。
它應(yīng)用某對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。

var n = "hello world!"; 
  function example(){    
    console.log(this.n); 
  }   
  var o={};   
  o.n = "hey~";  
  o.m = example;  
  o.m.apply(); //輸出 "hello world!"
  

當(dāng)apply()的參數(shù)為空時(shí),就是沒(méi)有對(duì)象去替換掉當(dāng)前的對(duì)象,所以默認(rèn)調(diào)用全局對(duì)象。
因此,這時(shí)會(huì)輸出’hello world!’,證明this指的是全局對(duì)象。

當(dāng)我們給apply()指定一個(gè)對(duì)象時(shí):

  var n = "hello world!"; 
  function example(){   
     console.log(this.n); 
  }  
  var o={};  
  o.n = "hey~";   
  o.m = example;  
  o.m.apply(o); //  輸出"hey~"

此時(shí)輸出了’hey~’,說(shuō)明對(duì)象替換成功,this 指向了 o 這個(gè)對(duì)象。

以上介紹的就是JavaScript中this在不同情況下的含義。雖然這只是很小的一部分,但對(duì)于理解函數(shù)卻作用很大。作為一個(gè)入門不久的我,這只是我最近一些小小的理解,希望能幫助那些想學(xué)習(xí)的小白!
也希望大佬們能多多包涵,畢竟知識(shí)有限寫的肯定有很多缺陷!部分借鑒網(wǎng)絡(luò)!
溜了溜了!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89696.html

相關(guān)文章

  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門,覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • React高階組件

    摘要:結(jié)語(yǔ)高階函數(shù)對(duì)于初學(xué)者來(lái)說(shuō)可能不太好理解,但當(dāng)你深入其中,了解其中的原理之后,我們可以使用高階函數(shù)來(lái)完成很多的工作。 前段時(shí)間在工作中寫Hybrid頁(yè)面時(shí)遇到了這樣的一個(gè)場(chǎng)景,公司需要一系列的活動(dòng)組件,在每個(gè)組件注冊(cè)的時(shí)候都需要調(diào)用App端提供的一個(gè)接口。一開(kāi)始也考慮了幾種方式,包括mixin、組件繼承以及react高階組件。但經(jīng)過(guò)了種種衡量,最后選擇使用了高階組件的做法。 1、Mix...

    ThinkSNS 評(píng)論0 收藏0
  • 理解JavaScript的核心知識(shí)點(diǎn):This

    摘要:關(guān)鍵字計(jì)算為當(dāng)前執(zhí)行上下文的屬性的值。毫無(wú)疑問(wèn)它將指向了這個(gè)前置的對(duì)象。構(gòu)造函數(shù)也是同理。嚴(yán)格模式無(wú)論調(diào)用位置,只取顯式給定的上下文綁定的,通過(guò)方法傳入的第一參數(shù),否則是。其實(shí)并不屬于特殊規(guī)則,是由于各種事件監(jiān)聽(tīng)定義方式本身造成的。 this 是 JavaScript 中非常重要且使用最廣的一個(gè)關(guān)鍵字,它的值指向了一個(gè)對(duì)象的引用。這個(gè)引用的結(jié)果非常容易引起開(kāi)發(fā)者的誤判,所以必須對(duì)這個(gè)關(guān)...

    TerryCai 評(píng)論0 收藏0
  • 深入了解js對(duì)象

    摘要:通過(guò)創(chuàng)建的對(duì)象運(yùn)算符創(chuàng)建并初始化一個(gè)新對(duì)象,關(guān)鍵字后跟隨一個(gè)函數(shù)調(diào)用,這里的函數(shù)稱作構(gòu)造函數(shù),構(gòu)造函數(shù)用以初始化一個(gè)新創(chuàng)建的對(duì)象。 該文章以收錄: 《JavaScript深入探索之路》 前言 對(duì)象是Javascript 的基本類型。對(duì)象是一種復(fù)合值,它將很多值(原始值或者其他對(duì)象)聚合在一起,可通過(guò)名字訪問(wèn)這些值。對(duì)象也可看做是屬性的無(wú)序集合。每個(gè)屬性都是一個(gè)名/值對(duì)。JavaSc...

    cheukyin 評(píng)論0 收藏0
  • JavaScript是如何工作的:深入類和繼承內(nèi)部原理+Babel和 TypeScript 之間轉(zhuǎn)換

    摘要:下面是用實(shí)現(xiàn)轉(zhuǎn)成抽象語(yǔ)法樹(shù)如下還支持繼承以下是轉(zhuǎn)換結(jié)果最終的結(jié)果還是代碼,其中包含庫(kù)中的一些函數(shù)。可以使用新的易于使用的類定義,但是它仍然會(huì)創(chuàng)建構(gòu)造函數(shù)和分配原型。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 15 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過(guò)了前面的章節(jié),可以在這里找到它們: JavaScript 是...

    PrototypeZ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<