JavaScript基礎(chǔ)之this指向
JavaScript中this也是一件很神奇 事情,在面向?qū)ο螅ū热鏹ava)中表示一個(gè)當(dāng)前的對(duì)象引用,但是在JavaScript中this不是固定不變的,而是隨著運(yùn)行環(huán)境的改變而改變。
this
老規(guī)矩先看代碼:
方法中
function test(){ console.log(this); }
對(duì)象中
function test(){ console.log(this); }
在方法中,this表示該方法所屬的對(duì)象。因?yàn)榈谝粋€(gè)是window上的方法,所以打印了window,而eat方法是Person方法,所以打印除了對(duì)象Person。
所以可以看出單獨(dú)在控制臺(tái)使用this, 表示全局對(duì)象。
隱藏的this
在對(duì)象,可以提前聲明一個(gè)一個(gè):
var Person1={ name:"張三", age:18 } var Person2={ name:"李四", age:19 }
這樣寫(xiě)會(huì)很麻煩,所以可以借鑒一下java類的概念,可以這樣:
var Person=function(name,age){ this.name=name, this.age=age } var Person1=new Person("張三",18); var Person2=new Person("李四",19);
其實(shí)在new的時(shí)候隱藏了一個(gè)return this,如果不使用new的話,發(fā)現(xiàn)其沒(méi)有返回這個(gè)新建的對(duì)象。
那么現(xiàn)在補(bǔ)全一下看:
var Person=function(name,age){ this.name=name, this.age=age return this; } var Person1=new Person("張三",18); var Person2=new Person("李四",19);
這樣的話,甚至可以偽造一個(gè)this的效果:
var Person=function(name,age){ var that={}; that.name=name, that.age=age return that; } var Person1=new Person("張三",18); var Person2=new Person("李四",19);
嚴(yán)格模式
this在嚴(yán)格模式和非嚴(yán)格模式下有些神奇的情況
function test() { return this; } # 如果js前面添加"use strict" 代表是嚴(yán)格模式 "use strict"; function test() { return this; }
這個(gè)可以看出在非嚴(yán)格模式下函數(shù)中,函數(shù)的所屬者默認(rèn)綁定到 this 上。所以可以打印出全局,但是嚴(yán)格模式下函數(shù)是沒(méi)有綁定到 this 上,這時(shí)候 this 是 undefined。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
JavaScript中的lastIndexOf()方法使用詳解
這篇文章主要介紹了JavaScript中的lastIndexOf()方法使用詳解,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06淺談關(guān)于JavaScript API設(shè)計(jì)的一些建議和準(zhǔn)則
這篇文章主要介紹了淺談關(guān)于JavaScript API設(shè)計(jì)的一些建議和準(zhǔn)則,文中列舉了許多知名的JS API進(jìn)行輔助說(shuō)明,極力推薦!需要的朋友可以參考下2015-06-06WiFi開(kāi)發(fā)|WiFi無(wú)線技術(shù)介紹
本文通過(guò)介紹WiFi無(wú)線技術(shù)來(lái)達(dá)成一種網(wǎng)絡(luò)延申目的,具體知識(shí)點(diǎn)請(qǐng)看下文2021-08-08javascript函數(shù)命名的三種方式及區(qū)別介紹
下面小編就為大家?guī)?lái)一篇javascript函數(shù)命名的三種方式及區(qū)別介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-03-03Javascript入門(mén)學(xué)習(xí)資料收集整理篇
為大家更好的接觸和學(xué)習(xí)js資料,所以我轉(zhuǎn)了這篇文章,我大約的看了下,文章寫(xiě)的非常不錯(cuò),希望大家不要急,慢慢看,第一次看不懂不要緊,多練習(xí)就可以了2008-07-07