this指向与更改this指向的方法

&1.this指向window

function apple(){

console.log(this);//window

}

apple();

&2.this指向实例化对象p1,p2;
function Person(age,name){

  this.age = age;

  this.name = name;

console.log(this)//Person

}

var p1=new Person(18,"dzj");

var p2 = new Person(20,"dfj");

&3.this指向该方法所属的对象

var obj = {

   fn:function(){

    console.log(this)//obj

   }

}

obj.fn();

&4.通过事件绑定的方法, 此时 this 指向 绑定事件的对象

<button id="btn">点击</button>

<script>

var myObtn=document.getElementById("btn");

myObtn.onClick = function(){

console.log(this)//<button id="btn">点击</button>

}

</script>

&5.定时器函数,此时this指向window

setInterval(function () {
console.log(this)
},2000)

*********************更改this指向的方法***********************

&6.call()让this不指向window,指向Person

var   Person={

  name:"dzj",

  like:"韩剧TV"

};

function demo(a,b){

console.log(a,b)//李易峰 真帅气

console.log(this);//{name:"dzj",like:"韩剧TV"}

//不用call()方法,this指向window;用call()方法,this指向Person;

}

demo.call(Person,"李易峰","真帅气")

&7.apply() 与call()非常相似,不同之处在于提供参数的方式,apply()使用参数数组,而不是参数列表

var   Person={

  name:"dzj",

  like:"韩剧TV"

};

function demo(a,b){

console.log(a,b)//4 5

console.log(this);//{name:"dzj",like:"韩剧TV"}

//不用apply()方法,this指向window;用apply()方法,this指向Person;

}

demo.apply(Person,[4,5])

posted @ 2019-04-22 18:31  认真对待生活  阅读(189)  评论(0编辑  收藏  举报