读书人

JavaScript种和继承:this属性

发布时间: 2012-10-25 10:58:57 作者: rapoo

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.

读书人网 >JavaScript

热点推荐