Как использовать пространства имен javascript?
Я пытаюсь выяснить пространства имен JavaScript... Я хотел бы написать пару функций и защитить их в пространствах имен, как показано ниже... но я думаю, что я не очень хорошо понимаю... Это слишком простой вопрос, но это будет понятно для меня, я думаю, если я понимаю, почему это не работает..
Вот опыт, который я пытаюсь:
var myApp = {
getTxt: function(x){
x.click(function(){
var txt = $(this).html();
alert(txt);
});
};
};
позвоните myApp:
var box = $('.js-box');
alert(myApp.getTxt(box));
Я думаю, что MyApp создан правильно, но я не уверен насчет вызова и запуска функции getTxt.
Называя это:
myApp.getTxt(box)
не значит запускать функцию x.click..? Почему это превращает объект?
Что я здесь не так делаю? Thanx!
2 ответа
Вы определяете myApp
как объект, так вот проблема, вы даете ;
после определения поля, которое вы не можете. Это приведет к синтаксической ошибке.
var myApp = {
getTxt: function(x){
x.click(function(){
var txt = $(this).html();
alert(txt);
});
} //<<<<-------------here was a semicolon,
};
И вы вызываете функцию, как показано ниже alert
это вызовет undefined
оповещение, потому что вы ничего не возвращаете из функции. Просто позвони
myApp.getTxt(box)
И он покажет содержимое по клику.
Как насчет модульного подхода.
var MyApp = MyApp || {};
MyApp.Module = (function () {
function App() {
}
App.prototype.getTxt = function(x){
//your code here
}
return App;
})();
Используйте это так:
var box = $('.js-box');
alert(new MyApp.Module.getTxt(box));