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類(lèi)的概念,可以這樣:
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)文章
解決js正則匹配換行問(wèn)題實(shí)現(xiàn)代碼
js正則匹配換行過(guò)程中會(huì)出現(xiàn)很多的問(wèn)題,本文將提供詳細(xì)的解決方法,需要的朋友可以參考下2012-12-12
javascript學(xué)習(xí)筆記(八) js內(nèi)置對(duì)象
javascript學(xué)習(xí)筆記之js內(nèi)置對(duì)象,需要的朋友可以參考下2012-06-06
javascript學(xué)習(xí)筆記(一)基礎(chǔ)知識(shí)
本文是學(xué)習(xí)筆記系列的第一篇,跟以前一樣,介紹些基礎(chǔ)知識(shí),包括js基本概念、 JScript 的變量、js的數(shù)據(jù)類(lèi)型、3.JScript 的運(yùn)算符、js流程控制、js函數(shù)。有需要的朋友可以參考下2014-09-09
document.getElementById的簡(jiǎn)寫(xiě)方式(獲取id對(duì)象的簡(jiǎn)略寫(xiě)法)
在js編寫(xiě)中,經(jīng)常需要獲取id對(duì)象,如果直接用getElementById來(lái)獲取,代碼多而且老的瀏覽器不支持這屬性,所有大家可以考慮用下面的代碼。2010-09-09
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-11-11

