看别人在讨论,于是整理了下,大家来看看下面代码中1-11分别输出的答案是什么???(不要试过再说)
var obj={ ???a:1, ???b:2, ???add:function(c,d){ ???????console.log(this.a+this.b+c+d); ???}}var a=b=0;//1obj.add(3,4);//2var add=obj.add;add(3,4);//3obj.add.call(this,3,4);//4obj.add.call(null,3,4);//5obj.add.call(window,3,4);//6obj.add.apply(this,[3,4]);//7obj.add.apply(null,[3,4]);//8obj.add.apply(window,[3,4]);//9var addOne=obj.add.bind(this);addOne(3,4);//10var addTwo=obj.add.bind(obj);addTwo(3,4);//11var Object={};var addThree=obj.add.bind(Object);addThree(3,4);
JS中那些让人头昏眼花的弯子
原文地址:http://www.cnblogs.com/-walker/p/7724911.html