javascript变量未定义(超出范围)
关于一个变量,我有一个奇怪的问题。我的设置如下:javascript变量未定义(超出范围),javascript,Javascript,关于一个变量,我有一个奇怪的问题。我的设置如下: var pattern = {/* some object with patterns */}; var view = (new function() { this.create_single = function(response) { pattern.block // this returns pattern object correctly }; this.create_multi = func
var pattern = {/* some object with patterns */};
var view = (new function() {
this.create_single = function(response) {
pattern.block // this returns pattern object correctly
};
this.create_multi = function(response) {
pattern.multi_block // this returns pattern as undefined
};
}());
var data = (new function() {
this.acquisition = function(response) {
view.create_single(response);
view.create_multi(response);
};
}());
所以在create_multi-method模式中,变量返回undefined,我不知道为什么会发生这种情况。在我用来编写代码的AdobeDreamweaver中,我有一个行错误,表示“pattern”超出了范围。有人能帮我理解发生了什么吗
谢谢你的帮助 在不传递参数的情况下尝试此选项 var模式={multi_block:mblock,block:block}; 变量视图=函数{ var create_single=functionresponse{ return pattern.block//此命令正确返回模式对象 }; var create_multi=functionresponse{ return pattern.multi_block//此返回未定义的模式 }; 返回创建单元; };
console.logview 你的方法还可以,但是你的“视图”方法没有返回任何结果。它在以下场景中工作正常:
var pattern = {
block: 1,
multi_block: 2
};
var view = (new function() {
this.create_single = function(response) {
return pattern.block // this returns pattern object correctly
};
this.create_multi = function(response) {
return pattern.multi_block // this returns pattern as undefined
};
}());
pattern对象内部是否有属性multi_block?是的,它是在那里定义的,问题在于pattern本身未定义,而不是multi_block属性inside。这显然会起作用,但不是将整个对象作为参数传递给函数,它应该是全局可用的,不需要传递。我试图在这里调试更复杂的问题。我认为问题在于关键字new,这可能是创建一个新的对象堆栈,其中上一个堆栈的局部变量不可见。如果您再次阅读代码,模式可用于create\u single方法,那么为什么它不可用于create\u multi?这是代码中的疯狂之处,对于变量视图,您正在为一个不返回任何内容的函数指定返回值。所以我很惊讶这个观点;开始工作目前你完全修改了我的代码,它与关键字new一起使用,因为它是静态类,需要从外部访问,它不能像这样存在,但我解决了一个问题,这是一个结构问题,我将在几分钟内打印答案。