关于this几种不同的使用场景
//1.作为构造函数执行
//2.作为对象属性执行
//3.普通函数执行
//call apply bind
代码如下:
function Foo(name) {
this.name = name //this 就是构造函数Foo
}
var f = new Foo('zhansan')
var obj = {
name :'A',
printName: function() {
console.log(this.name) //this 就是对象obj
}
}
obj.printName() //执行对象属性
function fn() {
console.log(this) //作为普通函数就是 Window
}
fn()
// call apply bind
function fnnn(name, age){
alert(name)
console.log(this)
}
fnnn.call({x: 100}, 'zhansan',20) //执行时第一个参数( { x: 100})作为this 多数使用call
function fnnn2(name, age){
alert(name)
console.log(this)
}
fnnn2.apply({x: 100}, ['zhansan',20]) //第一个参数( { x: 100})作为this,后面数组作为函数参数
var fnnn3 = function (name, age){
alert(name)
console.log(this)
}.bind({y: 200}) //在函数定义时,this指定为{y:200}
fnnn3(zhansan,20)