JavaScript中的this

来源:互联网 发布:flac转ape软件 编辑:程序博客网 时间:2024/06/03 05:37
其它一些编程语言如C++、Java等,其中的this值得是对象自己,但是JavaScript则不是,可能是自己也可能是其它。
  1. 当函数被直接调用时this指向全局对象window;
  2. 当函数被当作一个函数方法调用(即通过“.”或者“[]”来调用时),this指向调用该方法的对象。
可以使用call和apply强制改变this。

例:
function a(){
    console.log(this.name+typeof(this));
}
--------------------------------------------------------------
a();//这里直接调用a(),则this指window对象


this.name="",所以结果就是对象
--------------------------------------------------------------
var zhao={name:"my name"};
zhao.say=a;//把a()最为zhao的方法,则是第二种情况,this指zhao这个对象
zhao.say();
a.call(zhao);//call强制改变a中的this为zhao这个对象

--------------------------------------------------------------
a.a=a;//把函数a()当作其自身方法
a.name="my name  ";
a.a();//情况2,this指调用函数a()的对象,这里就是函数a本身

注意这里的结果

--------------------------------------------------------------
({
    name:"zhao",
    a:a
}).a();//匿名函数直接调用自身方法a,this指向这个匿名函数