0

我正在尝试创建一个对象,然后对该对象调用初始化函数。但是我得到了未定义的初始化。这是我的代码:

var SomeJSObj = function () {
    function Initialize() {
        $(document).ready(function () {
            alert('hello');
        });
    };
};

当我创建一个新对象SomeJSObj并调用时,Initialize我得到未定义的函数。有人可以帮我跟踪错误吗?

4

5 回答 5

1

应该是这样的,因为您想Initialize公开该功能:

var SomeJSObj = function () {
    this.Initialize = function() {
        $(document).ready(function () {
            alert('hello');
        });
    }
};

var t = new SomeJSObj();
t.Initialize();​
于 2012-11-11T18:03:04.140 回答
1

Initialize当前无法在SomeJSObj构造函数之外访问。您需要在每个实例或原型上公开它:

var SomeJSObj = function () {
    this.Initialize = function () {
        $(document).ready(function () {
            alert('hello');
        });
    };
};

在原型上更有效,因为只有一个函数副本必须存在于内存中,而不是每个实例一个:

var SomeJSObj = function () {};
SomeJSObj.prototype.Initialize = function () {
    //Do stuff
};
于 2012-11-11T18:03:15.533 回答
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
于 2012-11-11T18:07:14.120 回答
1

你可以这样做,简单易行。

var SomeJSObj = function () {
    this.Initialize=function() {
        $(document).ready(function () {
            alert('hello');
        });
    };

};

var x = new SomeJSObj();
x.Initialize()
于 2012-11-11T18:15:11.557 回答
0

这就是你想要的。见小提琴

var SomeJSObj = function () {
    this.initialize();
};
SomeJSObj.prototype.initialize = function() {
  $(document).ready(function () {
      alert('hello');
  });
};
new ​SomeJSObj​();​
于 2012-11-11T18:04:01.923 回答