亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【js】《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》——this的指向

王晗 / 562人閱讀

摘要:區(qū)分構(gòu)造器是否顯式地返回一個(gè)類型的對(duì)象例如不顯式返回對(duì)象小闊愛寶批龍小闊愛以及顯式返回對(duì)象小闊愛寶批龍寶批龍或調(diào)用跟普通函數(shù)相比,這種方式可以動(dòng)態(tài)改變傳入函數(shù)的例如小闊愛寶批龍小闊愛寶批龍

在js中,this總是指向一個(gè)對(duì)象,具體要看那個(gè)對(duì)象在運(yùn)行時(shí)函數(shù)的執(zhí)行環(huán)境(動(dòng)態(tài)綁定),即“函數(shù)在誰那被調(diào)用,this就指向誰”。

1、在對(duì)象的方法內(nèi)調(diào)用——指向該對(duì)象

例如

var obj = {
    name: "小闊愛",
    getName: function () {
        console.log("this === obj?", this === obj);
        console.log("this.name=", this.name);
    }
};
obj.getName(); // "小闊愛"

2、在普通方法內(nèi)調(diào)用——指向全局對(duì)象window

例如

window.name = "小闊愛";
var getName = function () {
    return this.name;
};
console.log("getName=", getName()); // 小闊愛

或者

window.name = "小闊愛";
var obj = {
    name: "寶批龍",
    getName: function () {
        return this.name;
    }
};
var getName = obj.getName;
console.log("getName=", getName()); // 小闊愛

或者——當(dāng)函數(shù)里面嵌套函數(shù)時(shí),指向window

window.id = "xiaokuoai";
document.getElementById("baopilong").onclick = function () {
    console.log("this.id=", this.id); // "baopilong"
    var newFun = function () {
        console.log("this.id=", this.id); // "xiaokuoai"
    }
    newFun();
};

注意:在ES5的strict模式下,普通函數(shù)內(nèi)的this被規(guī)定為不會(huì)指向window,而是undefined

例如

function func () {
    "user strict"
    console.log("this=", this); // undefined
}
func()

3、構(gòu)造器調(diào)用(被new運(yùn)算符調(diào)用)

當(dāng)函數(shù)被new運(yùn)算符調(diào)用時(shí),該函數(shù)總會(huì)返回一個(gè)對(duì)象。

例如(一般情況)

var obj = function () {
    this.name = "小闊愛";
};
var newObj = new obj();
console.log("newObj.name=", newObj.name); // "小闊愛"

特殊情況:(函數(shù)有返回值的情況)
如果返回值是一個(gè)對(duì)象,那么this指向的就是那個(gè)返回的對(duì)象,如果返回值不是一個(gè)對(duì)象那么this還是指向函數(shù)的實(shí)例。(區(qū)分構(gòu)造器是否顯式地返回一個(gè)object類型的對(duì)象)

例如(不顯式返回object對(duì)象)

var obj = function () {
    this.name = "小闊愛";
    return "寶批龍";
};
var newObj = new obj();
console.log("newObj.name=", newObj.name); // "小闊愛"

以及(顯式返回object對(duì)象)

var obj = function () {
    this.name = "小闊愛";
    return {
        name: "寶批龍"
    };
};
var newObj = new obj();
console.log("newObj.name=", newObj.name); // "寶批龍"

4、call或apply調(diào)用

跟普通函數(shù)相比,這種方式可以動(dòng)態(tài)改變傳入函數(shù)的this

例如

var obj1 = {
    name: "小闊愛",
    getName: function () {
        return this.name;
    }
};
var obj2 = {
    name: "寶批龍"
};
console.log("obj1.getName=", obj1.getName()); // "小闊愛"
console.log("obj1.getName.call(obj2)=", obj1.getName.call(obj2)); // "寶批龍"

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

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

相關(guān)文章

  • javascript設(shè)計(jì)模式開發(fā)實(shí)踐(二)- 封裝和原型模式

    摘要:對(duì)象會(huì)記住它的原型給對(duì)象提供了一個(gè)名為的隱藏屬性,某個(gè)對(duì)象的屬性默認(rèn)會(huì)指向它的構(gòu)造器的原型對(duì)象,即。我們通過代碼來驗(yàn)證再來實(shí)際上,就是對(duì)象跟對(duì)象構(gòu)造器的原型聯(lián)系起來的紐帶切記這句話,對(duì)未來理解原型鏈很有幫助。 封裝 封裝數(shù)據(jù) 在許多語(yǔ)言的對(duì)象系統(tǒng)中,封裝數(shù)據(jù)是由語(yǔ)法解析來實(shí)現(xiàn)的,這些語(yǔ)言也許提供了 private、public、protected 等關(guān)鍵字來提供不同的訪問權(quán)限。例如:j...

    luxixing 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式開發(fā)實(shí)踐 | 02 - this、call和apply

    摘要:構(gòu)造器的外表跟普通函數(shù)一樣,他們的區(qū)別在于被調(diào)用的方式。即,使用運(yùn)算符創(chuàng)建對(duì)象時(shí),就是將函數(shù)當(dāng)作構(gòu)造器調(diào)用。本節(jié)內(nèi)容為設(shè)計(jì)模式與開發(fā)實(shí)踐第二章筆記。 this JavaScript的this總是指向一個(gè)對(duì)象,至于指向哪個(gè)對(duì)象,是在運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境的動(dòng)態(tài)綁定的,而非函數(shù)被聲明時(shí)的環(huán)境。 this的指向 this的指向大致可以分為以下4類: 作為對(duì)象的方法調(diào)用 作為普通函數(shù)調(diào)用 ...

    darryrzhong 評(píng)論0 收藏0
  • JavasScript重難點(diǎn)知識(shí)

    摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...

    forsigner 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...

    blair 評(píng)論0 收藏0
  • 前端知識(shí)點(diǎn)整理

    摘要:難怪超過三分之一的開發(fā)人員工作需要一些知識(shí)。但是隨著行業(yè)的飽和,初中級(jí)前端就業(yè)形勢(shì)不容樂觀。整個(gè)系列的文章大概有篇左右,從我是如何成為一個(gè)前端工程師,到各種前端框架的知識(shí)。 為什么 call 比 apply 快? 這是一個(gè)非常有意思的問題。 作者會(huì)在參數(shù)為3個(gè)(包含3)以內(nèi)時(shí),優(yōu)先使用 call 方法進(jìn)行事件的處理。而當(dāng)參數(shù)過多(多余3個(gè))時(shí),才考慮使用 apply 方法。 這個(gè)的原因...

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

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

0條評(píng)論

王晗

|高級(jí)講師

TA的文章

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