JavaScript中的this機(jī)制
JavaScript有自己的一套this機(jī)制,在不同情況下,this的指向也不盡相同。
全局范圍
console.log(this); //全局變量
全局范圍使用this指向的是全局變量,瀏覽器環(huán)境下就是window。
注:ECMAScript5的strict模式不存在全局變量,這里的this是undefined。
函數(shù)調(diào)用中
function foo() { console.log(this); } foo(); //全局變量
函數(shù)調(diào)用中的this也指向全局變量。
注:ECMAScript5的strict模式不存在全局變量,這里的this是undefined。
對(duì)象方法調(diào)用
var test = { foo: function () { console.log(this); } } test.foo(); //test對(duì)象
對(duì)象方法調(diào)用中,this指向調(diào)用者。
var test = { foo: function () { console.log(this); } } var test2 = test.foo; test2(); //全局變量
不過由于this的晚綁定特性,在上例的情況中this將指向全局變量,相當(dāng)于直接調(diào)用函數(shù)。
這點(diǎn)非常重要,同樣的代碼段,只有在運(yùn)行時(shí)才能確定this指向
構(gòu)造函數(shù)
function Foo() { console.log(this); } new Foo(); //新創(chuàng)建的對(duì)象 console.log(foo);
在構(gòu)造函數(shù)內(nèi)部,this指向新創(chuàng)建的對(duì)象。
顯式設(shè)置this
function foo(a, b) { console.log(this); } var bar = {}; foo.apply(bar, [1, 2]); //bar foo.call(1, 2); //Number對(duì)象
使用Function.prototype的call或者apply方法是,函數(shù)內(nèi)部this會(huì)被設(shè)置為傳入的第一個(gè)參數(shù)。
相關(guān)文章
JavaScript CSS修改學(xué)習(xí)第六章 拖拽
這是一個(gè)簡(jiǎn)單可用的拖拽代碼。用鼠標(biāo)和鍵盤都可以操作。2010-02-02一個(gè)可以兼容IE FF的加為首頁(yè)與加入收藏實(shí)現(xiàn)代碼
一個(gè)可以兼容IE FF的加為首頁(yè)與加入收藏 好不容易找到,收藏起來。2009-11-11JavaScript語(yǔ)言核心數(shù)據(jù)類型和變量使用介紹
和眾多編程語(yǔ)言一樣,JavaScript也有自己語(yǔ)言的核心,了解并學(xué)好JavaScript的語(yǔ)言核心部分是JavaScript學(xué)習(xí)道路上非常良好的開始2013-08-08js取0-9隨機(jī)取4個(gè)數(shù)不重復(fù)的數(shù)字代碼實(shí)例
這篇文章主要介紹了js取0-9隨機(jī)取4個(gè)數(shù)不重復(fù)的數(shù)字,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03javascript運(yùn)算符——位運(yùn)算符全面介紹
下面小編就為大家?guī)硪黄猨avascript運(yùn)算符——位運(yùn)算符全面介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07JavaScript基礎(chǔ)語(yǔ)法與數(shù)據(jù)類型介紹
這篇文章介紹了JavaScript基礎(chǔ)語(yǔ)法與數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02