20200216
Plan
继续看你不知道的 js
Notes
this 的默认绑定
在严格模式下,this 的默认绑定会失效。这种失效是指函数运行时,而非函数调用时
// 运行在严格模式下
function foo() {
"use strict";
console.log(this.a); // type error
}
foo();
function foo() {
console.log(this.a); // undefined
}
(function() {
"use strict";
foo();
})();
this 的隐式绑定
对象属性引用链中只有上一层或者说最后一层在调用位置中起作用
function foo() {
console.log(this.a);
}
var obj2 = {
a: 42,
foo
};
var obj1 = {
a: 2,
obj2
};
obj1.obj2.foo(); // 42
显示绑定
new 和硬绑定:
function foo(p1, p2) {
this.val = p1 + p2;
}
var bar = foo.bind(null, "p1"); // 部分应用
var baz = new bar("p2"); // 输出:p1p2
绑定规则优先级:new > 显示 > 隐式 > 默认