最近看别人代码的时候,经常能见到JS中的this关键字,自己也是经常会用到,但是用的越多,反而越糊涂,所以打算整理一下,也加强下自己的记忆。
一、当函数作为一个对象的方法时,在函数中使用this,此时this指向这个对象。
var Student={
name:'Frank',
sayName:function(){
alert(this.name); //Frank
alert(this===Student); //true
}
}
Student.sayName();
二、
当函数作为构造函数使用时,在构造函数中使用this,则this指向的是通过构造函数创建出来的新的对象。
function Cat(name){
this.name=name;
}
var cat1=new Cat('Tom');
alert(cat1.name); //Tom
三、
在全局作用域中使用时,this就指向全局对象window。
var name='Frank';
alert(this.name); //Frank
alert(window.name); //Frank
alert(this===window); //true
四、
使用函数的call或者apply方法将this指向其他的作用域,可以重新定义函数的执行环境,即this的指向。
var obj1 = {
name: 'Tom',
getName: function() {
return this.name
}
}
var obj2 = {
name : 'Jack'
}
console.log(obj1.getName()) ;//Tom
console.log(obj1.getName.call(obj2)) //Jack
热门评论
请问name:function(){}是什么意思,还没用过呢