2012-11-11 48 views
0

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

var SomeJSObj = function() { 
    function Initialize() { 
     $(document).ready(function() { 
      alert('hello'); 
     }); 
    }; 
}; 
当我创建的 SomeJSObj一个新的对象,并调用 Initialize我得到的功能没有定义

。有谁能帮我追踪这个错误吗?

回答

1

Initialize目前无法访问的SomeJSObj构造之外。你需要揭露它,无论是在每个实例或原型:

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

在原型更有效,因为只有一个功能的副本在内存中存在,而不是一个为每个实例:

var SomeJSObj = function() {}; 
SomeJSObj.prototype.Initialize = function() { 
    //Do stuff 
}; 
+0

感谢詹姆斯的解释+1 – Jack

1

应该是这样,因为你想在Initialize函数public:

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

var t = new SomeJSObj(); 
t.Initialize();​ 
+0

感谢Kirill为最快和最正确的答案。 – Jack

0

这就是你想要的。请参阅the fiddle

var SomeJSObj = function() { 
    this.initialize(); 
}; 
SomeJSObj.prototype.initialize = function() { 
    $(document).ready(function() { 
     alert('hello'); 
    }); 
}; 
new ​SomeJSObj​();​ 
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 
1

你能做到这样,简单易用的方式。

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

}; 

var x = new SomeJSObj(); 
x.Initialize() 
相关问题