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一起使用,因为它是静态类,需要从外部访问,它不能像这样存在,但我解决了一个问题,这是一个结构问题,我将在几分钟内打印答案。