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/)谢谢!

原文地址:https://www.cnblogs.com/gfqFighting/p/2735528.html