Как использовать пространства имен 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!

http://jsfiddle.net/67b02cht/1/

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)

И он покажет содержимое по клику.

DEMO

Как насчет модульного подхода.

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));
Другие вопросы по тегам