JavaScript类和继承:this属性
};?
?
// 等价于window.foo();?
foo.apply(window);?// "apple"??
// 此时foo中的this === pack?
foo.apply(pack); ? // "orange"
注:apply和call两个函数的作用相同,唯一的区别是两个函数的参数定义不同。
因为在JavaScript中函数也是对象,所以我们可以看到如下有趣的例子:
- // 定义一个全局函数?
function foo() {?
? if (this === window) {??
?? ???console.log("this is window.");??
? }??
}?
// 函数foo也是对象,所以可以定义foo的属性boo为一个函数?
foo.boo = function() {?
? if (this === foo) {??
?? ???console.log("this is foo.");??
? } else if (this === window) {??
?? ???console.log("this is window.");??
? }??
};?
// 等价于window.foo();?
foo();?// this is window.??
// 可以看到函数中this的指向调用函数的对象?
foo.boo();?// this is foo.??
// 使用apply改变函数中this的指向?
foo.boo.apply(window);?// this is window.