1、this
1、js面试题目
1 | var obj = { |
2、解题原理
首先需要从函数的调用开始讲起。JS(ES5)里面有三种函数调用形式:1
2
31、func(p1, p2) //语法糖
2、obj.child.method(p1, p2) //语法糖
3、func.call(context, p1, p2) // 先不讲 apply
3才是正常调用形式,用3表示1,2:1
2
3
4
5func(p1, p2) 等价于
func.call(undefined, p1, p2)
obj.child.method(p1, p2) 等价于
obj.child.method.call(obj.child, p1, p2)
至此我们的函数调用只有一种形式:1
func.call(context, p1, p2) //context就是this
3、开始解题
1 | var obj = { |