码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中的'this'

时间:2015-03-08 21:17:52      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

最近工作和看书时遇到了很多js中‘this‘,觉得有必要梳理一下。

1.在全局作用域中使用时,this就指向全局对象window。

var name=‘aaa‘;
alert(this.name);       //aaa
alert(window.name);     //aaa
alert(this===window);   //true

 

2.当在全局作用域中定义一个函数,在函数中使用this,此时函数执行的环境对象是全局对象window,所以this也指向window。

var name=‘aaa‘;
function sayName(){
    alert(this.name);       //aaa
    alert(window.name);     //aaa
    alert(this===window);   //true
}
sayName();

 

3.当然也可以通过函数的apply或call方法将函数中的this指向其他的作用域(环境对象)。

var obj={name:‘bbb‘}
var name=‘aaa‘;
function sayName(){
     alert(this.name);       //bbb
     alert(this===window);   //false
     alert(this===obj);      //true
 }
sayName.apply(obj);

当改变了sayName的作用域时,this对象也跟着指向了sayName的作用域obj,所以此时this指向obj。

 

4.当函数作为构造函数使用时,在构造函数中使用this,则this指向的是通过构造函数创建出来的新的对象。

function Student(name){
    this.name=name;
}
var stu1=new Student(‘abc‘);
alert(stu1.name);
//abc

使用构造函数创建对象时,首先会创建一个新的对象,然后会将构造函数的作用域赋给新对象,因此this就指向了新的对象。

 

5.当函数作为一个对象的方法时,在函数中使用this,此时this指向了这个对象。

var Student={
    name:‘abc‘,
    sayName:function(){
        alert(this.name);       //abc
        alert(this===Student);  //true
    }
}
Student.sayName();

 

总结:this引用的是函数据已执行的环境对象。

 

javascript中的'this'

标签:

原文地址:http://www.cnblogs.com/Tzhibin/p/4322202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!