今天谈谈this call apply
为什么要特意说一说这几个关键字呢。就学就行了,他们应用还是蛮广泛的
1、this
和其他语言不一样,js中的this总是指向一个对象,而具体指向那个对象是在运行时基于运行时函数的执行环境动态绑定的。
那么this指向分几种方式呢
(1)、作为对象的方法调用
当函数作为对象的方法被调用时,this指向该对象
var obj = {
a:1,
getA:function(){
alert( this === obj ); //输出 true
alert( this.a ); //输出 1
}
};
obj.getA();
(2)、作为普通函数调用
当函数不作为对象的属性被调用时,此时this总是指向window对象
window.name = "globalName";
var getName = function(){
return this.name;
};
console.log(getName());//输出 globalName
这里还分几种不同的情况 比如说我们在 button节点的时间函数内,有一个局部的回调方法,回调方法会被作为普通的函数调用。那么this就指向了全局对象 也就是window 。该怎么办呢???
这就需要我们保存div节点的引用。 方法就不详细介绍了 ,相信大家在平时的开发中都用到了。
在ES5的严格模式下,以上情况this被规定为undefined
(3)、构造器调用
js中没有类,但是可以从构造器中创建对象,同时也提供了new运算符,使得构造器很想一个类。
构造器的外观和普通函数提莫一样,区别就是调用的方式不同。当用new调用函数时,该函数总会返回一个对象,通常情况下,构造器里的this就指向返回的这个对象。
var MyClass = fucntion(){
this.name = 'zhuya';
};
var obj = new MyClass();
alert( obj.name ); //输出 zhuya
但是用new调用构造器时,要注意的问题就是,如果构造器显示的返回了一个objec