在js中,代码总是有一个上下文对象(代码处在该对象内).
上下文对象是通过this变量体现的。这个变量永远指向当前代码所处的对象内。
第一个alert是true,原因是obj对象还没有与val属性关联,所以这个时候执行以下yes或者no方法,与之关联起来。
window.no=obj.no使window.no指向了obj.no,那么no()方法里的this变量指向的就是window了,所以下面的两个弹出的也是true。
上面这种例子的对象改变有些乱,所以有种改进的写法比较容易明白:
changeColor(“red”)这个方法会出错,原因是this指向了window对象,但是window对象没有style属性,
call方法的第一个参数是需要修改的对象,第二个对象是原函数的参数。
apply方法的第一个参数是需要修改的对象,第二个参数是传给函数的所有参数的数组,一般都用arguments 。
callee的妙用: