var test='global';
var c=function(){
var test='test';
return {
pre:function(){
console.log(this.test);
return 'ste';
}
}
}();
console.log(c.pre());
这个结果为何是
undefined
ste
这个undefined 是如何出现的,我的理解
题目中c.pre(),不应该是作为属性调用,将pre的作用域挂钩到c的objec上么
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
this 指向 {
如果写错这样: return {
undefined来自 console.log(this.test);
这里的this是包含了pre方法的那个匿名对象。
上面的json字面量里并没有test这个属性,所以结果为undefined
这个才是 c,
pre()中的this指向的是c,不是 global可见,没有
test属性。匿名函数中的
var test='test'只是申明了一个局部变量,不是任何对象的属性。如果你需要
c.test输出test值,就需要在return增加公开访问的属性。如果你需要
c.test输出global值,就要替换函数的接收者希望有所帮助~ :)
你这个时候的this 已经是指向全局了
这个地方我说错了,
c的方法,相当于
此时你调用c.pre(),this指向的就是当前对象
还有一种情况,如果你不是直接招行c.pre,而是将它作为参数的话,this就不是指向c对象了
这个时候打印的this.test就是undefined,此时this已经跑到全局了
对于this指针可以这么理解,方法属于那个对象,方法中的this指针就指向哪个对象