js 的上下文

可以理解为上下文对象,表示当前代码执行时所处的环境。即是this变量所指代的对象;例子:

 
function Test() {
    console.log(this);
}
Test();    //window
new Test();//Object

在执行Test()时,此时的上下文对象是window,即Javascript的全局对象!在执行new Test() 时新建了一个Object,此时执行Test函数的上下文对象就是Object。再看下面例子

function newObj(Fun,arguments) {
    var o = {};
    if (Fun && typeof Fun === "function") {
        o.__proto__ = Fun.prototype;
        Fun.apply(o, arguments);
        return o;
    }
}

这主要是new函数操作的模拟,可以看到Fun.apply(o,arguments);这一步,apply的作用是指定执行Fun函数并制定其上下文为o,输入参数为arguments对象。所以new Test()得到的结果是Object。

原文(http://mzhou.me/article/81001/)谢谢!

posted on 2012-10-23 15:05  冲锋的路上的兵  阅读(553)  评论(0编辑  收藏  举报