扫码关注官方订阅号
我想知道 怎么能console.log 出20呢? 现在的this指向的window;不知道怎么改变作用域 请大神指教
人生最曼妙的风景,竟是内心的淡定与从容!
var z = 100; function foo(){ console.log(this.z); } (function show(fuaArg){ var obj = {z: 20}; foo.call(obj) })(foo)
我猜你可能需要的是这个,其中主要是通过call改变执行作用域中的z对象,详细的要看看call和apply、bind
你这个console.log(z),怎么都不会打印出20吧。只能去找全局的z变量
首先,a和z是错别字吧。。。另外,我想题主混淆了两个概念,一个是变量作用域,一个是this指向。函数中this指向取决于函数调用方式,一般函数调用中的this一定是指向全局(global或window),和变量作用域无关。
a
z
this
这里要想输出20(假设变量名统一为z),直接在show里面写console.log(z)就好了。
console.log(z)
更详细的可以参考我以前写的博文和一篇翻译:JavaScript中的this[翻译] JavaScript Scoping and Hoisting
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我猜你可能需要的是这个,其中主要是通过call改变执行作用域中的z对象,详细的要看看call和apply、bind
你这个console.log(z),怎么都不会打印出20吧。只能去找全局的z变量
首先,
a和z是错别字吧。。。另外,我想题主混淆了两个概念,一个是变量作用域,一个是
this指向。函数中
this指向取决于函数调用方式,一般函数调用中的this一定是指向全局(global或window),和变量作用域无关。这里要想输出20(假设变量名统一为z),直接在show里面写
console.log(z)就好了。更详细的可以参考我以前写的博文和一篇翻译:
JavaScript中的this
[翻译] JavaScript Scoping and Hoisting