var num1 = 1, num2 = 2;
function cal() {
    var num1 = 10, num2 = 20;
    console.log('this', this);
    console.log('----------');
    console.log('this.num1', this.num1);
    console.log('----------');
    console.log(this.num1 + this.num2);
}
var calBind = cal.bind({ num1: 100, num2: 200 });
 
new cal();
cal();
new calBind();
calBind();

// NaN      // new 创建对象,此时的 this 指向 cal , 但 var num1 并不是定义 this.num1 。所以最后就是 undefined + undefined = NaN
// 3        // 此时的 this 指向外部 window ,window 中定义了 var num1 = 1, var num2 = 2;        // node 跑出来的结果是 NaN;浏览器跑出来的结果是 3
// NaN      // new 创建对象,此时的 this 还是指向 cal ,undefined + undefined = NaN
// 300      // bind 绑定函数 this ,此时 100 + 200 = 300