如何使用javascript名称空间

How to use javascript namespaces?

本文关键字:空间 javascript 何使用      更新时间:2023-09-26

我试图找出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函数…?为什么它会转动一个物体?

我在这里做错了什么?谢谢!

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

您将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));