成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

this指向性的問題匯總

baukh789 / 2127人閱讀

摘要:一因為中的是在運行期綁定的,因此中的關(guān)鍵字具備多重含義。二具體在應(yīng)用中,的指向大概可以分為以下四種。例如,或者都是為了改變函數(shù)內(nèi)部的指向。

一、因為JavaScript中的this是在運行期綁定的,因此JavaScript中的this關(guān)鍵字具備多重含義。

二、具體在應(yīng)用中,this的指向大概可以分為以下四種。

1.作為對象的方法調(diào)用 obj.run()

2.作為普通函數(shù)調(diào)用 function()

3.作為構(gòu)造函數(shù)調(diào)用 var b =new a();

4.function.prototype.call或者function.prototype.apply調(diào)用

三、作為對象的方法調(diào)用和作為普通函數(shù)調(diào)用

window.name=bj;

var obj={

name:zzy,

getName(){

    console.log(this.name) 

    }

}

obj.getNAme();//輸出的zzy

var getA=obj.getName;

getA(); //輸出的為bj

不管getA之前是getNAme(),還是其他某個對象的屬性,只要最后是以getA(),這種方式調(diào)用的,均視為普通函數(shù)調(diào)用,此時this指向window對象

但是,在ES5的strict模式下,作為函數(shù)調(diào)用的 this被規(guī)定不會指向全局對象

getA(); //輸出的為underfined

四.構(gòu)造函數(shù)的調(diào)用

通常情況下,構(gòu)造函數(shù)里的this指向那個返回的這個對象,但是如果構(gòu)造器顯示的返回了一個object類型的對象,則this指向返回的object對象

var Myclass = function(){

this.name = "beidan";

}

var obj = new Myclass();

console.log(obj.name);//beidan

var Myclass = function(){

this.name = "beidan";

return{        //顯示的返回一個對象,注意!既要是顯示,即有return,也要是對象{}

    name:"test"

}

}

var obj = new Myclass();

console.log(obj.name);//test

五.function.prototype.call或function.prototype.apply調(diào)用

call,apply都是為了改變函數(shù)內(nèi)部this的指向。例如,function.apply()或者

function.apply()都是為了改變函數(shù)內(nèi)部的this指向。

二者的作用完全一樣,只是接受參數(shù)的方式不太一樣。

function.call(this, arg1, arg2);        //參數(shù)列表arg1,arg2

function.apply(this, [arg1, arg2]);    //參數(shù)數(shù)組 [arg1,arg2]

第一個參數(shù),指定了那個函數(shù)體內(nèi)this對象的指向,它可以是javascript對象,如果為null,則函數(shù)體內(nèi)的this會指向默認的window

第二個參數(shù),call 需要把參數(shù)按順序傳遞進去,而 apply 則是把參數(shù)放在數(shù)組里。當(dāng)參數(shù)不確定數(shù)量時用 apply ,然后把參數(shù) push 進數(shù)組傳遞進去。或者也可以通過 arguments來獲取所有的參數(shù)。這樣看來,apply的使用率更高。

1.修正this指向

在實際開發(fā)過程中,會出現(xiàn)一下的情況

document.getElementById("div1").onclick = function(){

console.log(this.id);  //div1

var func = function(){

    console.log(this.id);   

}

func();  //通過普通函數(shù)調(diào)用,this指向window,輸出undefined

}

使用call來改變this的指向

document.getElementById("div1").onclick = function(){

console.log(this.id);  //div1

var func = function(){

    console.log(this.id);

}

func.call(this); //使func函數(shù)內(nèi)部的this指向當(dāng)前的函數(shù)對象,輸出div1

}

2.模擬繼承

function fruits() {}

fruits.prototype = {

color: "red",

say: function() {

    console.log("My color is "+ this.color);

}

}

var apple = new fruits;

apple.say(); //My color is red

但是,如果我們還有其它 2個對象 banana= {color : "yellow"} ,orange = {color:‘orange’},想使用say方法,但是又不想對它們重新定義say方法。

那么,我們可以用apply或者call 借用 fruit里面的say方法

banana = {color: "yellow"};

orange = {color:‘orange’};

apple.say.call(banana); //My color is yellow

apple.say.apply(orange ); //My color is orange

這里需要注意的是banana繼承apple.say的方法;

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/109430.html

相關(guān)文章

  • js對象創(chuàng)建方法匯總及對比

    摘要:中創(chuàng)建對象的方式有很多,尤其是基于原型的方式創(chuàng)建對象,是理解基于原型繼承的基礎(chǔ)。該函數(shù)中的屬性指向該源性對象當(dāng)通過該函數(shù)的構(gòu)造函數(shù)創(chuàng)建一個具體對象時,在這個對象中,就會有一個屬性指向原型。 js中創(chuàng)建對象的方式有很多,尤其是基于原型的方式創(chuàng)建對象,是理解基于原型繼承的基礎(chǔ)。因此在這里匯總一下,并對各種方法的利弊進行總結(jié)和對比,不至于以后對這些概念有模糊。 簡單方式創(chuàng)建 var o = ...

    piapia 評論0 收藏0
  • 【Step-By-Step】一周面試題 && 答案匯總 / 01

    摘要:構(gòu)造函數(shù)返回值是或,這種情況下指向的是返回的對象。并執(zhí)行了構(gòu)造函數(shù)中的方法如果函數(shù)沒有返回其他對象,那么指向這個新對象,否則指向構(gòu)造函數(shù)中返回的對象。對于文檔來說應(yīng)當(dāng)是唯一的。的值意味著其不可能是基本數(shù)據(jù)類型。 關(guān)于【Step-By-Step】 不積跬步無以至千里。 Step-By-Step (點擊進入項目) 是我于 2019-05-20 開始的一個項目,項目愿景:一步一個腳印,量變引...

    xiaolinbang 評論0 收藏0
  • 一些前端面試題匯總

    摘要:類型請求成功后的回調(diào)函數(shù)。參數(shù)由服務(wù)器返回,并根據(jù)參數(shù)進行處理后的數(shù)據(jù)描述狀態(tài)的字符串。默認設(shè)置下,所有請求均為異步請求。類型發(fā)送請求前可修改對象的函數(shù),如添加自定義頭。對象是唯一的參數(shù)。如果返回可以取消本次請求。設(shè)置為將不緩存此頁面。 題目一 : 統(tǒng)計字符串中出現(xiàn)次數(shù)最多的字符 eg : var s = abcdefghijklabcdaaaefadca ; // 其中a出現(xiàn)次數(shù)最多...

    mtunique 評論0 收藏0
  • JavaScript匯總

    摘要:前端筆記基本數(shù)據(jù)類型種數(shù)據(jù)類型基本類型復(fù)雜類型基本類型與引用類型的區(qū)別基本類型基本類型,是按值訪問,可以操作保存在變量中的實際值基本類型的值不可變輸出輸出其中的實際值并未變化,方法是返回了一個新的字符串也不能對基本類型添加屬性和方法表明了基 前端筆記/JavaScript 基本 數(shù)據(jù)類型 6種數(shù)據(jù)類型 基本類型: Undefined、Null、Boolean、String、Numbe...

    用戶83 評論0 收藏0
  • 前端面試題目匯總

    摘要:線程在執(zhí)行過程中與進程還是有區(qū)別的。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。 關(guān)于js 1.原型鏈 2.AJAX請求數(shù)據(jù)時解決緩存的辦法3.js的繼承 ...

    lastSeries 評論0 收藏0

發(fā)表評論

0條評論

baukh789

|高級講師

TA的文章

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