JS中this指向函數(shù)的調(diào)用方法有哪些?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
前郭ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
初學(xué)javascript總會(huì)對(duì)this指向感到疑惑,想要深入學(xué)習(xí)javascript,必須先理清楚和this相關(guān)的幾個(gè)概念。javascript中this總是指向一個(gè)對(duì)象,但具體指向誰是在運(yùn)行時(shí)根據(jù)函數(shù)執(zhí)行環(huán)境動(dòng)態(tài)綁定的,而并非函數(shù)被聲明時(shí)的環(huán)境。除去不常用的with和eval的情況,具體到實(shí)際應(yīng)用中,this指向大致可以分為以下4種。
當(dāng)函數(shù)作為對(duì)象的方法被調(diào)用時(shí),this指向該對(duì)象:
var person = { name: 'twy', getName: function() { console.info(this === person); // 輸出true console.info(this.name); // 輸出twy } } person.getName();
當(dāng)函數(shù)作為普通的函數(shù)被調(diào)用時(shí),非嚴(yán)格模式下this指向全局對(duì)象:
function getName(){ // 非嚴(yán)格模式 console.info(this === window); // 瀏覽器環(huán)境下輸出true } getName();
嚴(yán)格模式下this為undefined:
function getName(){ // 嚴(yán)格模式 "use strict" console.info(this === window); // 輸出false } getName();
當(dāng)new一個(gè)對(duì)象時(shí),構(gòu)造器里的this指向new出來的這個(gè)對(duì)象:
function person(){ // 構(gòu)造函數(shù) this.color = 'white'; } var boy = new person(); console.info(boy.color); // 輸出white
用 Function.prototype.apply
或 Function.prototype.call
可以動(dòng)態(tài)改變傳入函數(shù)的this指向:
// 聲明一個(gè)父親對(duì)象,getName方法返回父親的名字 var father = { name: 'twy', getName: function(){ return this.name; } } // 生命一個(gè)兒子對(duì)象,但是沒有返回名字的功能 var child = { name: 'chy' } console.info(father.getName()); // 輸出twy // 使用call或apply將father.getName函數(shù)里this指向child console.info(father.getName.call(child)); // 輸出chy console.info(father.getName.apply(child)); // 輸出chy
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)JS中this指向函數(shù)的調(diào)用方法有哪些大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。