最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip

2023-07-12 16:10 作者:bili_31103672616  | 我要投稿

this是Javascript語言的一個(gè)關(guān)鍵字。

它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能在函數(shù)內(nèi)部使用。

1、常用的四種情況

1)全局性調(diào)用,因此this就代表全局對(duì)象Global。

function test(){

this.x = 1;

alert(this.x);

}

test(); // 1


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

函數(shù)還可以作為某個(gè)對(duì)象的方法調(diào)用,這時(shí)this就指這個(gè)上級(jí)對(duì)象。

function test(){

alert(this.x);

}

var o = {};

o.x = 1;

o.m = test;

o.m(); // 1


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

所謂構(gòu)造函數(shù),就是通過這個(gè)函數(shù)生成一個(gè)新對(duì)象(object)。這時(shí),this就指這個(gè)新對(duì)象

function test(){

this.x = 1;

}

var o = new test();

alert(o.x); // 1


4)apply調(diào)用

apply()是函數(shù)對(duì)象的一個(gè)方法,它的作用是改變函數(shù)的調(diào)用對(duì)象,它的第一個(gè)參數(shù)就表示改變后的調(diào)用這個(gè)函數(shù)的對(duì)象。因此,this指的就是這第一個(gè)參數(shù)。

var x = 0;

function test(){

alert(this.x);

}

var o={};

o.x = 1;

o.m = test;

o.m.apply(); //0

apply()的參數(shù)為空時(shí),默認(rèn)調(diào)用全局對(duì)象。因此,這時(shí)的運(yùn)行結(jié)果為0,證明this指的是全局對(duì)象。

如果把最后一行代碼修改為

o.m.apply(o); //1

運(yùn)行結(jié)果就變成了1,證明了這時(shí)this代表的是對(duì)象o。


apply()會(huì)改變this的對(duì)象,如果括號(hào)里沒有值,對(duì)象按全局算,如果有對(duì)象,則按括號(hào)里面的算。


2、回調(diào)函數(shù)的this指向

var o = {

??age : 12,

??say : function() {

????function callback() {

??????return this.age;

????}

????func(callback);

??}

};


function func(callback) {

??var name = "Xiao Ming";

??console.log(name + " is " + callback() + " years old.");

}

o.say();


代碼分析:這里創(chuàng)建了一個(gè)單例對(duì)象【o】和一個(gè)普通函數(shù)【func】,【o】中有一個(gè)方法【say】,在方法【say】里面調(diào)用了函數(shù)【func】,并傳入了一個(gè)回調(diào)函數(shù)【callback】作為參數(shù),【callback】中返回了對(duì)象【o】的屬性【age】。當(dāng)執(zhí)行到函數(shù)【func】時(shí),打印的結(jié)果如下:


console.log(name + " is " + callback() + " years old.");??//Xiao Ming is undefined years old.

1

我們可以看到【func】中執(zhí)行的回調(diào)函數(shù)【callback】的返回結(jié)果是“undefined”而非“12”。?

原因如下:函數(shù)內(nèi)部的【this】指向于此函數(shù)的調(diào)用者(擁有者)。在上面這個(gè)例子中,雖然【callback】函數(shù)定義于對(duì)象【o】的【say】方法中,但實(shí)際上由于【callback】是在【func】函數(shù)中進(jìn)行的普通調(diào)用,那么【func】中的【callback】的調(diào)用者我們便可以理解為是【window】對(duì)象,因此,【callback】中的【this】便指向了【window】,而在全局作用域中由于并不存在變量【age】,所以“this.age”(即“window.age”)便不存在,就返回了“undefined”。這里多說一點(diǎn):既然變量【age】不存在,那么在使用一個(gè)未定義的變量時(shí)怎么沒有報(bào)錯(cuò)(即“Uncaught ReferenceError: age is not defined”)呢?因?yàn)椋@里是“return this.age”(在這里相當(dāng)于“return window.age”)而非“return age”,即當(dāng)使用一個(gè)對(duì)象的未定義的屬性時(shí)不會(huì)報(bào)錯(cuò),并返回“undefined”,而直接使用一個(gè)未定義的變量時(shí)便會(huì)報(bào)錯(cuò)。


千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
图们市| 收藏| 华容县| 千阳县| 武胜县| 中宁县| 西乌珠穆沁旗| 驻马店市| 出国| 南投县| 读书| 沿河| 禹城市| 陇川县| 合肥市| 天祝| 赤壁市| 光山县| 偃师市| 洛川县| 南靖县| 色达县| 临泉县| 临泽县| 凤阳县| 太湖县| 平阴县| 镇雄县| 康保县| 富裕县| 宁明县| 股票| 怀安县| 渝北区| 尼勒克县| 黎川县| 定襄县| 河曲县| 巨鹿县| 鄂托克前旗| 枝江市|