函数调用-this指向window
function Person(name){
this.name = name
}
Person('abc')
function fn(){
this.age = 18
}
fn()
console.log('age',age)
var age = 18
var p = {
age:15,
say:function(){
console.log(this.age)
}
}
var f1 = p.say
f1()
方法调用-this指向调用方法的变量
function Person(name){
this.name = name
}
Person.prototype.say = function(){
console.log("this",this)
}
const p1 = new Person('mxm')
p1.say()
var age = 18
var p = {
age:15,
say:function(){
console.log(this.age)
}
}
p.say()
var clear = function(){
console.log(this.length)
}
var length = 50;
var tom = {c:clear,length:100}
tom.c()
var clear = function(){
console.log(this.length)
}
var length = 50;
var tom = {c:clear}
tom.c()
构造函数调用方式-指向构造函数的实例
function Fn(name){
this.name = name
}
var n = new Fn()
上下文调用方式【call,bind,apply】- this指向调用传递的第一个参数
function f1(){
console.log(this)
}
f1.call([1,2,3])
f1.call({age:18})
f1.call(1)
f1.call('abc')
f1.call(true)
f1.call(undefined)
bind的传参与call一样,但是他与call、apply不同的是,需要再执行一次
function f1(){
console.log(this)
}
const _f1 = f1.bind({age:18})
_f1()