1.默认绑定规则的优先级是最低的
因为存在其他规则时,就会通过其他规则的方式来绑定this
2.显示绑定优先级高于隐式绑定
obj.foo()//this指向obj
//1、call/apply的显示绑定高于隐式绑定
obj.foo.call('abc')//this指向abc
obj.foo.apply('abc')//this指向abc
// 2、bind隐式绑定
var bar = obj.foo.bind('cab')
bar()//this指向cab----这样是直接调用了 无法看obj与bind优先级
// 3、更明显的比较
function foo() {
console.log(this)
}
var obj = {
name: 'obj',
foo:foo.bind('aaa')
}
obj.foo()//this指向aaa
3.new绑定优先级高于隐式绑定
var obj = {
name: "obj",
foo: function() {
console.log(this)
}
}
// new的优先级高于隐式绑定
var f = new obj.foo()//this指向foo函数
4.new绑定优先级高于显式绑定
new关键字不能和apply/call一起来使用
//new bind
var obj = {
name: "obj",
foo: function() {
console.log(this)
}
}
// new的优先级高于隐式绑定
var f = new obj.foo()//this指向foo函数