手记

JavaScript的this指针在不同情况下的应用

最近看别人代码的时候,经常能见到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
12人推荐
随时随地看视频
慕课网APP

热门评论

请问name:function(){}是什么意思,还没用过呢

查看全部评论