myObject有两个函数,第一个是调用第二个函数,有没有办法在callMe()里面看变量?
var myObj = {
callMefirst: function() {
var thisObj = this;
var a;
a = 'chocolate cookie';
thisObj.callMe();
},
callMe: function() {
alert(a);
}
}
myObj.callMefirst();
否则我知道我可以将它作为参数传递,或者在对象的全局范围内设置var a但我有兴趣了解范围的这种特定情况
答案 0 :(得分:1)
没有。由于它是使用var
关键字定义的,因此它的范围限定在它定义的函数中。因此,只有该函数和该函数内部定义的其他函数(您没有)才能看到它。
答案 1 :(得分:1)
a
在callMefirst
函数中定义,仅存在于此处。请记住,JavaScript具有功能(词法)范围。因此,允许callMe
访问a
的最简单方法是按照您的建议并在myObj
范围内定义。
答案 2 :(得分:0)
试试这段代码:
var myObj = {
a:"",
callMefirst: function() {
var thisObj = this;
this.a = 'chocolate cookie';
thisObj.callMe();
},
callMe: function() {
alert(this.a);
}
}
myObj.callMefirst();
答案 3 :(得分:0)
你可以通过多种方式做到这一点;以下使用闭包。
var myObj = (function() {
var a;
return{
callMefirst: function() {
var thisObj = this;
a = 'chocolate cookie';
thisObj.callMe();
},
callMe: function() {
alert(a);
}
}
})()
myObj.callMefirst();
使用带对象启动的闭包:
var myObjF = function(pass) {
var a=pass;
return{
callMefirst: function() {
var thisObj = this;
thisObj.callMe();
},
callMe: function() {
alert(a);
}
}
}
var myObj=myObjF("hello");
myObj.callMefirst();
使用函数作为对象:
var myObjF = function(pass) {
this.a=pass;
this.callMefirst = function() {
var thisObj = this;
thisObj.callMe();
};
}
myObjF.prototype.callMe = function() {
alert(a);
}
var myObj=new myObjF("hello");
myObj.callMefirst();