我正在尝试创建一个对象,然后在该对象上调用initialize函数。但是我初始化没有定义。这是我的代码:
var SomeJSObj = function () {
function Initialize() {
$(document).ready(function () {
alert('hello');
});
};
};
当我创建SomeJSObj
的新对象并调用Initialize
时,我的函数未定义。有人可以帮我跟踪错误吗?
答案 0 :(得分:1)
应该是这样的,因为你想让Initialize
函数公开:
var SomeJSObj = function () {
this.Initialize = function() {
$(document).ready(function () {
alert('hello');
});
}
};
var t = new SomeJSObj();
t.Initialize();
答案 1 :(得分:1)
Initialize
目前无法在SomeJSObj
构造函数之外访问。您需要在每个实例或原型上公开它:
var SomeJSObj = function () {
this.Initialize = function () {
$(document).ready(function () {
alert('hello');
});
};
};
在原型上效率更高,因为只有一个函数副本必须存在于内存中,而不是每个实例都有一个:
var SomeJSObj = function () {};
SomeJSObj.prototype.Initialize = function () {
//Do stuff
};
答案 2 :(得分:1)
首先,$(document).ready
应在之外的函数定义:
$(document.ready(function() {
...
});
问题是你的方法应该使用前缀this.
:
this.Initialize = function() {
...
};
所以总而言之:
$(document).ready(function() {
var SomeJSObj = function () {
this.Initialize = function() {
alert('hello');
};
};
});
要调用您的方法,您必须创建一个实例:
var instance = new SomeJSObj(); // make sure this in in $(document).ready
并调用方法:
instance.initialize(); // works
答案 3 :(得分:1)
你可以这样做,简单方便。
var SomeJSObj = function () {
this.Initialize=function() {
$(document).ready(function () {
alert('hello');
});
};
};
var x = new SomeJSObj();
x.Initialize()
答案 4 :(得分:0)
这就是你想要的。请参阅the fiddle。
var SomeJSObj = function () {
this.initialize();
};
SomeJSObj.prototype.initialize = function() {
$(document).ready(function () {
alert('hello');
});
};
new SomeJSObj();