摘要:很多高級編程語言都給新創建的對象分配一個引用自身的指針比如中的指針,中的,也有指針,雖然它的指向可能相對復雜些,但是指向的,永遠只可能是對象。
很多高級編程語言都給新創建的對象分配一個引用自身的指針,比如JAVA、C++中的this指針,python中的self,JavaScript也有this指針,雖然它的指向可能相對復雜些,但是this指向的,永遠只可能是對象。
一、在一般函數方法中使用 this 指代全局對象
function test(){
this.x = 1
console.log(this.x)
}
test() // 1
二、.作為對象方法調用,this 指代上級對象,數組同理
var obj = {
name:"obj",
func1 : function() {
console.log(this)
}
}
obj.func1() // this--->obj
document.getElementById("div").onclick = function(){
console.log(this)
}; // this--->div
三、函數作為window內置函數的回調函數調用:this指向window對象(setInterval、setTimeout 等)
window.setInterval(function(){
console.log(this)
}, 300)
四、作為構造函數調用,this 指代 new 實例化的對象
function test(){
this.x = 1
}
var o = new test()
alert(o.x) // 1
五、apply、call、bind改變函數的調用對象,此方法的第一個參數為改變后調用這個函數的對象
var x = 0;
function test(){
console.log(this.x)
}
var obj = {}
obj.x = 1
obj.m = test
obj.m.apply() //0,apply()的參數為空時,默認調用全局對象
obj.m.apply(obj); //1
六、匿名函數的執行環境具有全局性,this對象通常指向window對象
var name = "The Window";
var obj = {
name: "My obj",
getName: function() {
return function() {
console.log(this.name);
};
}
};
obj.getName()(); // "The Window"
紙上得來終覺淺,絕知此事要躬行,一起動手刷一下this的經典面試題吧
var x = 3;
var y = 4;
var obj = {
x: 1,
y: 6,
getX: function() {
var x =5;
return function() {
return this.x;
}();
},
getY: function() {
var y =7;
return this.y;
}
}
console.log(obj.getX())//3
console.log(obj.getY())//6
var name="the window";
var object={
name:"My Object",
getName:function(){
return this.name;
}
}
object.getName(); //"My Object"
(object.getName)(); //"My Object"
(object.getName=object.getName)(); //"the window",函數賦值會改變內部this的指向,這也是為什么需要在 React 類組件中為事件處理程序綁定this的原因;
var a=10;
var obt={
a:20,
fn:function(){
var a=30;
console.log(this.a)
}
}
obt.fn(); // 20
obt.fn.call(); // 10
(obt.fn)(); // 20
(obt.fn,obt.fn)(); // 10
new obt.fn(); // undefined
function a(xx){
this.x = xx;
return this
};
var x = a(5);
var y = a(6);
console.log(x.x) // undefined
console.log(y.x) // 6
<題目持續更新中...>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/106262.html
摘要:很多高級編程語言都給新創建的對象分配一個引用自身的指針比如中的指針,中的,也有指針,雖然它的指向可能相對復雜些,但是指向的,永遠只可能是對象。 很多高級編程語言都給新創建的對象分配一個引用自身的指針,比如JAVA、C++中的this指針,python中的self,JavaScript也有this指針,雖然它的指向可能相對復雜些,但是this指向的,永遠只可能是對象。 一、在一般函數方法...
摘要:終于,我在看到美團的社招信息后,勇敢地邁出了第一步。當時參加的是美團點評部門的面試,部門前端技術棧是,后端用的。后來才知道美團是一次性全部面完的。所以以后有去參加美團面試的童鞋,最好做好面試四個小時的打算。 showImg(https://segmentfault.com/img/bV0c3T?w=672&h=361); 前言 我叫王小閏(花名),非科班出身,野生前端從業者,在小公司打...
摘要:終于,我在看到美團的社招信息后,勇敢地邁出了第一步。當時參加的是美團點評部門的面試,部門前端技術棧是,后端用的。后來才知道美團是一次性全部面完的。所以以后有去參加美團面試的童鞋,最好做好面試四個小時的打算。 showImg(https://segmentfault.com/img/bV0c3T?w=672&h=361); 前言 我叫王小閏(花名),非科班出身,野生前端從業者,在小公司打...
閱讀 1154·2019-08-30 15:55
閱讀 715·2019-08-26 13:56
閱讀 2259·2019-08-26 12:23
閱讀 3501·2019-08-26 10:29
閱讀 721·2019-08-26 10:17
閱讀 3102·2019-08-23 16:53
閱讀 864·2019-08-23 15:55
閱讀 3154·2019-08-23 14:25