-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
this的确定
① 首先找到表达式中哪个表示的是函数
var obj = {
name: 'yongheng',
foo: function (){
console.log(this.name)
}
}
var fn1 = {name: 'haha'}
fn1.func = obj.foo
fn1.func() //这里func是函数,所以fn1调用了它,this --> fn1 输出结果:‘haha’
var fn2 = obj.foo
fn2() //这里fn2本身就是个函数,没人调用它,undefined --> window
obj.foo() //这里foo是函数,obj调用了它, this --> obj 输出结果: ‘yongheng’② 变形一下就可以了
上面的三个输出依次可以变形:
fn1.func.call(fn1)
fn2.call(undefined)
obj.foo.call(obj)通用变形:
func(p1, p2) 等价于
func.call(undefined, p1, p2)
obj.child.method(p1, p2) 等价于
obj.child.method.call(obj.child, p1, p2)事件中的this
+ 查看方法
* 看源码
* 看文档(推荐)
* console.log(this)
+ 怎么用this
* 直接使用this
* currentTarget
* 用.bind({name: 'abc'}) ->里面必须是对象$('ul li').on('click',function (){
console.log(this) // {'name': 'abc'}
}).bind('name': 'abc'})