this的指向只有在调用的时候才能确定,即this永远指向最后调用它的那个对象。
# 改变this指向
- call
// 用法
Fun.call(this,arg1,arg2,arg3...)
继承
function Person(name) {
this.name = name
}
function Student(name, id) {
// 继承了父亲的name属性
Person.call(this, name)
this.id = id
}
let s1 = new Student('susan', 110)
console.log(s1) // {name: 'susan', id: 110}
指定上下文的this
let name = 'lily'
function f1() {
console.log(this.name)
}
function f2() {
return {
name: 'susan'
}
}
f1.call(f2()) // 打印出susan
- apply:同call,只是传参方式为数组而不是列表。
Fun.apply(this, [arg1, arg2...])
- bind
var sum = function(a, b) {
return a + b;
};
var add5 = sum.bind(null, 5);
console.log(add5(10));