2016-10-12 13:53发布
请问下,什么时候使用这两个调用函数?这两个的区别,以及分别什么情况下使用?
这个例子是在前面说明 this 对象的示例基础上修改而成的。这一次,sayColor() 也是作为全局函数定义的,而且当在全局作用域中调用它时,它确实会显示 "red",因为对 this.color 的求值会转换成对 window.color 的求值。而 sayColor.call(this) 和 sayColor.call(window),则是两种显式地在全局作用域中调用函数的方式,结果当然都会显示 "red"。但是,当运行 sayColor.call(o) 时,函数的执行环境就不一样了,因为此时函数体内的 this 对象指向了 o,于是结果显示的是 "blue"。
this
sayColor()
"red"
this.color
window.color
sayColor.call(this)
sayColor.call(window)
sayColor.call(o)
o
"blue"
最多设置5个标签!
这个例子是在前面说明
this
对象的示例基础上修改而成的。这一次,sayColor()
也是作为全局函数定义的,而且当在全局作用域中调用它时,它确实会显示"red"
,因为对this.color
的求值会转换成对window.color
的求值。而sayColor.call(this)
和sayColor.call(window)
,则是两种显式地在全局作用域中调用函数的方式,结果当然都会显示"red"
。但是,当运行sayColor.call(o)
时,函数的执行环境就不一样了,因为此时函数体内的this
对象指向了o
,于是结果显示的是"blue"
。一周热门 更多>