1.(new绑定)函数是否在new中调用,如果是,this则指向这个心创建的对象本身
var bar=new foo(); foo的this指向自身;
2.(显示绑定)函数通过call apply或者bind(this指向,传入的参数),this绑定的是指定的对象
var bar =foo.call(obj1); //foo的this指向boj1;
apply直接调用了函数 把 "[]"内的参数转换成了参数
### ES6 ### 用"..."来代替 apply() ------------foo(...[1,2,3])
bind()对函数参数进行了柯里化操作 把多个参数转化成单一参数的函数?(形容不准确)
3.(隐式绑定)函数是否在某个上下文对象中调用(调用此函数的对象的作用域),如果是,this指向此对象的作用域
var bar=obj1.foo(); //obj1.foo foo中的this指向的是obj1
######## bar(); //foo中的this指向的是window
4.(默认绑定) 严格模式下,绑定到undefined ,否则绑定到全局对象中
function foo(p1,p2){
console.log(this.a);
}
var obj11={
a:"666",
foo:foo
};
var a="888";
obj11.foo();//666
var bars=obj11.foo;
bars();//888