詳解JavaScript原型對象的this指向問題
一、this指向
構(gòu)造函數(shù)中的this 指向?qū)嵗龑ο蟆D敲丛蛯ο髏his的指向呢?
如下:
function Student(age,name){
this.age = age;
this.name = name;
}
var that;
Student.prototype.score = function(){
console.log('孩子們成績都很好!');
that = this;
}
var xl = new Student(18,'小熊');
xl.score();
console.log(that === xl);
定義一個(gè)全局變量that,在score函數(shù)里面給它賦值,讓其指向函數(shù)里面的this,調(diào)用實(shí)例對象的score方法,判斷that和實(shí)例對象是否一致,如果一致,則說明原型對象this的指向是該實(shí)例。
打印結(jié)果為:

即原型對象里面放的是方法, 這個(gè)方法里面的this 指向的是 這個(gè)方法的調(diào)用者, 也就是這個(gè)實(shí)例對象。
二、修改this指向
1、call()方法
寫一個(gè)簡單的兩數(shù)相加的函數(shù)。
function fn(a,b){
console.log(a+b);
console.log(this);
}
fn(1,2)
在函數(shù)內(nèi)部打印this,調(diào)用函數(shù),看其this的指向。

可知this指向window對象,如果我們想讓this指向我們新創(chuàng)建的一個(gè)對象,怎么操作呢?
先定義一個(gè)對象,
o = {};
然后通過call()修改this指向,讓其指向新創(chuàng)建的對象o
o = {
name: 'xl'
};
fn.call(o,1,2);
打印結(jié)果為:

現(xiàn)在this指向新創(chuàng)建的對象o,即修改成功。
2、apply()方法
apply()和call()方法基本相同,這里就不贅述,直接上代碼:
function fn(a,b){
console.log(a+b);
console.log(this);
}
o = {
name: 'xl'
};
fn.apply(o,[1,2]);
可以發(fā)現(xiàn),這兩種方法還是有區(qū)別的,即:call()接受的參數(shù)必須是連續(xù)參數(shù),而apply()方法接收參數(shù)的形式是數(shù)組參數(shù)。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Bootstrap實(shí)現(xiàn)下拉菜單多級聯(lián)動
這篇文章主要為大家詳細(xì)介紹了Bootstrap實(shí)現(xiàn)下拉菜單多級聯(lián)動,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Angularjs結(jié)合Bootstrap制作的一個(gè)TODO List
這篇文章主要介紹了Angularjs結(jié)合Bootstrap制作的一個(gè)TODO List 的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08
javascript溫習(xí)的一些筆記 基礎(chǔ)常用知識小結(jié)
在電腦上找到多年前的javascript的一些小筆記,因?yàn)橐獙⒐P記本上面的文件整理一下, 不用的刪除掉, 所以將此篇筆記再發(fā)布一下,存檔到自己的博客吧, 電腦上的文件就刪除了2011-06-06
如何解決ligerUI布局時(shí)Center中的Tab高度大小
這篇文章主要介紹了如何解決ligerUI布局時(shí)Center中的Tab高度大小的相關(guān)資料,需要的朋友可以參考下2015-11-11
javascript設(shè)計(jì)模式 – 外觀模式原理與用法實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 外觀模式,結(jié)合實(shí)例形式分析了javascript外觀模式基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
JS實(shí)現(xiàn)拖拽元素時(shí)與另一元素碰撞檢測
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)拖拽元素時(shí)與另一元素碰撞檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
利用Three.js如何實(shí)現(xiàn)陰影效果實(shí)例代碼
使用three.js可以方便的讓我們在網(wǎng)頁中做出各種不同的3D效果,下面這篇文章主要給大家介紹了關(guān)于利用Three.js如何實(shí)現(xiàn)陰影效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09

