p.apply(),p是一个函数
正确写法应该是point.getX.apply()
因为你的p里面并没有x这个属性,point.getX.apply(p) 返回的是p的x属性,所以会打印出来undefined
只要在图上5行和6行之间加一个 p.x=22,这样就会打印出来结果了
-------------------------------------------------------------------------
刚才在外面,用手机打字不太方便,我把刚才的回答完善一下:
js中 方法的属性 apply() 实际作用是 修改 被调用者所属的对象
也就是说 p.apply( point ) 这个段代码的作用是 将 p (被调用者) 归属到point对象下,也就等同于 point 对象里面有一个 p 方法,这样 p方法中 this.x,实际上就是在调用 point.x
同理
point.getX.apply( p ) 就是 在 p中调用 point.getX 方法,也就是说 point.getX 方法中使用的 this.x 实际上是 p.x,因为你代码中定义的 p 并没有 x 属性,所以在打印的时候就是undefined
总结起来,_function_.apply( obj ),传入的obj是谁,_function_ 所属的对象就是谁