91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中this的指向問題歸納的示例分析

發布時間:2021-08-02 14:25:42 來源:億速云 閱讀:150 作者:小新 欄目:web開發

這篇文章給大家分享的是有關js中this的指向問題歸納的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

this

this:上下文,會根據執行環境變化而發生指向的改變.

1.單獨的this,指向的是window這個對象

alert(this); // this -> window

2.全局函數中的this

function demo() {
 alert(this); // this -> window
}
demo();

在嚴格模式下,this是undefined.

function demo() {
 'use strict';
 alert(this); // undefined
}
demo();

3.函數調用的時候,前面加上new關鍵字

所謂構造函數,就是通過這個函數生成一個新對象,這時,this就指向這個對象。

function demo() {
 //alert(this); // this -> object
 this.testStr = 'this is a test';
}
let a = new demo();
alert(a.testStr); // 'this is a test'

4.用call與apply的方式調用函數

function demo() {
 alert(this);
}
demo.call('abc'); // abc
demo.call(null); // this -> window
demo.call(undefined); // this -> window

5.定時器中的this,指向的是window

setTimeout(function() {
 alert(this); // this -> window ,嚴格模式 也是指向window
},500)

6.元素綁定事件,事件觸發后,執行的函數中的this,指向的是當前元素

window.onload = function() {
 let $btn = document.getElementById('btn');
 $btn.onclick = function(){
 alert(this); // this -> 當前觸發
 }
}

7.函數調用時如果綁定了bind,那么函數中的this指向了bind中綁定的元素

window.onload = function() {
 let $btn = document.getElementById('btn');
 $btn.addEventListener('click',function() {
 alert(this); // window
 }.bind(window))
}

8.對象中的方法,該方法被哪個對象調用了,那么方法中的this就指向該對象

let name = 'finget'
let obj = {
 name: 'FinGet',
 getName: function() {
 alert(this.name);
 }
}
obj.getName(); // FinGet
---------------------------分割線----------------------------
let fn = obj.getName;
fn(); //finget this -> window

騰訊筆試題

var x = 20;
var a = {
 x: 15,
 fn: function() {
 var x = 30;
 return function() {
  return this.x
 }
 }
}
console.log(a.fn());
console.log((a.fn())());
console.log(a.fn()());
console.log(a.fn()() == (a.fn())());
console.log(a.fn().call(this));
console.log(a.fn().call(a));

答案

1.console.log(a.fn());

對象調用方法,返回了一個方法。

# function() {return this.x}

2.console.log((a.fn())());

a.fn()返回的是一個函數,()()這是自執行表達式。this -> window

# 20

3.console.log(a.fn()());

a.fn()相當于在全局定義了一個函數,然后再自己調用執行。this -> window

# 20

4.console.log(a.fn()() == (a.fn())());

# true

5.console.log(a.fn().call(this));

這段代碼在全局環境中執行,this -> window

# 20

6.console.log(a.fn().call(a));

this -> a

# 15

感謝各位的閱讀!關于“js中this的指向問題歸納的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

藁城市| 得荣县| 永善县| 安岳县| 皋兰县| 张家界市| 兴文县| 长阳| 体育| 宜君县| 双流县| 鹤壁市| 台北市| 德阳市| 赤城县| 寿光市| 昌都县| 磐石市| 莱阳市| 和田市| 神池县| 东丰县| 武夷山市| 德格县| 盐亭县| 甘肃省| 高碑店市| 东阳市| 瓦房店市| 怀远县| 松江区| 平凉市| 江永县| 进贤县| 景宁| 老河口市| 菏泽市| 大同县| 昆明市| 镇平县| 庆城县|