Javascript 未定义页()错误消息
我从Firebug收到一条Javascript 未定义页()错误消息,javascript,Javascript,我从Firebug收到一条page()未定义的错误消息,其中包含以下Javascript。为什么? ( function() { var page = function() { var min_central_width = 10; function minimumCentralWidth(val) { min_central_width = val; } } $(document).ready(f
page()未定义的错误消息,其中包含以下Javascript。为什么?
( function() {
var page = function() {
var min_central_width = 10;
function minimumCentralWidth(val) {
min_central_width = val;
}
}
$(document).ready(function() {
page().minimumCentralWidth(400);
});
})();
我对Javascript还是新手。如何避免这种情况?问题是page
没有返回值,因此page()
是未定义的。你必须这样写:
( function() {
var page = function() {
// create an object to return:
var ret = {};
// set its properties:
ret.min_central_width = 10;
ret.minimumCentralWidth =
function (val) {
this.min_central_width = val;
};
// return it:
return ret;
};
$(document).ready(function() {
page().minimumCentralWidth(400);
});
})();
( function() {
var page = new function() { //single instance of your page class
var min_central_width = 10;
this.minimumCentralWidth = function (val) {
min_central_width = val;
alert('set to ' + val);
}
}
$(document).ready(function() {
page.minimumCentralWidth(400);
});
})();
。但以上这些并不能真正起到任何作用。它创建一个新对象,并将对象的min\u central\u width
设置为400
。但是它没有将对象用于任何用途,因此上面的内容没有任何有意义的效果。(这仅仅是因为您删除了与问题无关的代码吗?如果是这样,那就没关系了。:-尽管这里有一些很好的答案,但我想再添加一些,以根据您的操作提供一些可能的选项
如果确实希望使minimumCentralWidth成为页面类的属性,可以执行以下操作:
( function() {
var page = function() {
var min_central_width = 10;
this.minimumCentralWidth = function (val) {
min_central_width = val;
alert('set to ' + val);
}
}
$(document).ready(function() {
var p = new page(); //new up your object
p.minimumCentralWidth(400);
});
})();
如果您试图模拟静态实用程序类,可以执行以下操作:
( function() {
var page = function() {
// create an object to return:
var ret = {};
// set its properties:
ret.min_central_width = 10;
ret.minimumCentralWidth =
function (val) {
this.min_central_width = val;
};
// return it:
return ret;
};
$(document).ready(function() {
page().minimumCentralWidth(400);
});
})();
( function() {
var page = new function() { //single instance of your page class
var min_central_width = 10;
this.minimumCentralWidth = function (val) {
min_central_width = val;
alert('set to ' + val);
}
}
$(document).ready(function() {
page.minimumCentralWidth(400);
});
})();
如果您对这些示例如何工作有任何具体问题,请告诉我,我将尝试添加更多细节 是的,我只是尝试用一个简单的代码示例来复制这个问题。是的,我确实有一个问题。在第一个示例中,var p=new page();创建一个新的页面实例,就像Java中的new一样?意思是,如果我修改一个实例,其他实例就不会被修改?是的,这是非常正确的。您在p
中更改的任何属性都不会影响您新建的其他实例,因为每个实例都在自己的闭包中运行。