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

資訊專欄INFORMATION COLUMN

影響JavaScript中this指向的幾種函數(shù)調(diào)用方法

Drinkey / 1792人閱讀

摘要:前言初學(xué)總會(huì)對(duì)指向感到疑惑,想要深入學(xué)習(xí),必須先理清楚和相關(guān)的幾個(gè)概念。中總是指向一個(gè)對(duì)象,但具體指向誰是在運(yùn)行時(shí)根據(jù)函數(shù)執(zhí)行環(huán)境動(dòng)態(tài)綁定的,而并非函數(shù)被聲明時(shí)的環(huán)境。除去不常用的和的情況,具體到實(shí)際應(yīng)用中,指向大致可以分為以下種。

前言

初學(xué)javascript總會(huì)對(duì)this指向感到疑惑,想要深入學(xué)習(xí)javascript,必須先理清楚和this相關(guān)的幾個(gè)概念。javascript中this總是指向一個(gè)對(duì)象,但具體指向誰是在運(yùn)行時(shí)根據(jù)函數(shù)執(zhí)行環(huán)境動(dòng)態(tài)綁定的,而并非函數(shù)被聲明時(shí)的環(huán)境。除去不常用的with和eval的情況,具體到實(shí)際應(yīng)用中,this指向大致可以分為以下4種。

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

當(dāng)函數(shù)作為對(duì)象的方法被調(diào)用時(shí),this指向該對(duì)象:

var person = {
  name: "twy",
  getName: function() {
    console.info(this === person);  // 輸出true
    console.info(this.name);     // 輸出twy
  }
}
person.getName();
作為普通函數(shù)調(diào)用

當(dāng)函數(shù)作為普通的函數(shù)被調(diào)用時(shí),非嚴(yán)格模式下this指向全局對(duì)象:

function getName(){
  // 非嚴(yán)格模式
  console.info(this === window); // 瀏覽器環(huán)境下輸出true
}
getName();

嚴(yán)格模式下this為undefined:

function getName(){
  // 嚴(yán)格模式
  "use strict"
  console.info(this === window); // 輸出false
}
getName();
構(gòu)造器調(diào)用

當(dāng)new一個(gè)對(duì)象時(shí),構(gòu)造器里的this指向new出來的這個(gè)對(duì)象:

function person(){
  // 構(gòu)造函數(shù)
  this.color = "white";
}
var boy = new person();
console.info(boy.color);  // 輸出white
call或apply調(diào)用

Function.prototype.applyFunction.prototype.call 可以動(dòng)態(tài)改變傳入函數(shù)的this指向:

// 聲明一個(gè)父親對(duì)象,getName方法返回父親的名字
var father = {
  name: "twy",
  getName: function(){
    return this.name;
  }
}
// 生命一個(gè)兒子對(duì)象,但是沒有返回名字的功能
var child = {
  name: "chy"
}
console.info(father.getName()); // 輸出twy

// 使用call或apply將father.getName函數(shù)里this指向child
console.info(father.getName.call(child)); // 輸出chy
console.info(father.getName.apply(child)); // 輸出chy

下一篇文章我將重點(diǎn)介紹call和apply。

最后

將this理解透徹,是一個(gè)jser必須要做的事情。

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

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

相關(guān)文章

  • javascript 面向?qū)ο?實(shí)現(xiàn)繼承幾種方式)

    摘要:老明調(diào)用了從原型中繼承來的方法繼承到了當(dāng)前對(duì)象的原型中調(diào)用了從原型中擴(kuò)展來的方法構(gòu)造繼承基本思想借用構(gòu)造函數(shù)的基本思想就是利用或者把父類中通過指定的屬性和方法復(fù)制借用到子類創(chuàng)建的實(shí)例中。 1、原型鏈繼承 核心: 將父類的實(shí)例作為子類的原型 缺點(diǎn): 父類新增原型方法/原型屬性,子類都能訪問到,父類一變其它的都變了 function Person (name) { ...

    liujs 評(píng)論0 收藏0
  • JavaScript繼承幾種方式

    摘要:組合方式繼承終極版工商建設(shè)開心能分清是孩子還是父輩二狗的構(gòu)造函數(shù)已指向圖示關(guān)鍵代碼創(chuàng)建對(duì)象的方法就是用原型鏈來連接的。也讓二狗有了確定的歸屬。 一、繼承原理 原型鏈不知道什么是原型鏈?來讀幾個(gè)關(guān)鍵詞: 哥歐 構(gòu) 構(gòu)造函數(shù) 構(gòu)造函數(shù) 構(gòu)造函數(shù) 實(shí)例 實(shí)例 實(shí)例 原型對(duì)象 原型對(duì)象 原型對(duì)象 prototype prototype prototype __proto__ __pro...

    SegmentFault 評(píng)論0 收藏0
  • JavaScript 嚴(yán)格模式下this幾種指向

    摘要:前言曾經(jīng)被中的弄暈了,今天整理總結(jié)一下在嚴(yán)格模式下的幾種指向。嚴(yán)格模式構(gòu)造函數(shù)中的事件處理函數(shù)中的在嚴(yán)格模式下,在事件處理函數(shù)中,指向觸發(fā)事件的目標(biāo)對(duì)象。 前言 曾經(jīng)被 JavaScript 中的 this 弄暈了,今天整理總結(jié)一下在嚴(yán)格模式下 this 的幾種指向。 1. 全局作用域中的this 在嚴(yán)格模式下,在全局作用域中,this指向window對(duì)象 use stric...

    smallStone 評(píng)論0 收藏0
  • 關(guān)于JavaScript函數(shù)調(diào)用幾種模式

    摘要:函數(shù)的調(diào)用有五種模式方法調(diào)用模式,函數(shù)調(diào)用模式,構(gòu)造器調(diào)用模式,調(diào)用模式以及回調(diào)模式,下面分別對(duì)這幾種模式進(jìn)行說明。構(gòu)造器調(diào)用模式構(gòu)造函數(shù)的調(diào)用方式被稱為構(gòu)造器調(diào)用模式,這是模擬類繼承式語言的一種調(diào)用方式。 函數(shù)的調(diào)用有五種模式:方法調(diào)用模式,函數(shù)調(diào)用模式,構(gòu)造器調(diào)用模式,apply/call調(diào)用模式以及回調(diào)模式,下面分別對(duì)這幾種模式進(jìn)行說明。 1.函數(shù)調(diào)用與方法調(diào)用模式: 1.1 聲...

    鄒強(qiáng) 評(píng)論0 收藏0
  • JavaScript知識(shí)點(diǎn)總結(jié)

    摘要:參與任何數(shù)值計(jì)算的結(jié)構(gòu)都是,而且。。面向人類的理性事物,而不是機(jī)器信號(hào)。達(dá)到無刷新效果。的工作原理總是指向一個(gè)對(duì)象,具體是運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境動(dòng)態(tài)綁定的,而非函數(shù)被聲明時(shí)的環(huán)境。原型對(duì)象上有一個(gè)屬性,該屬性指向的就是構(gòu)造函數(shù)。 1.JS面向?qū)ο蟮睦斫?面向?qū)ο蟮娜筇攸c(diǎn):繼承、封裝、多態(tài) 1、JS中通過prototype實(shí)現(xiàn)原型繼承 2、JS對(duì)象可以通過對(duì)象冒充,實(shí)現(xiàn)多重繼承, 3...

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

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

0條評(píng)論

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