0

我正在尝试找出 JavaScript 命名空间......我想编写几个函数并将它们保护在如下命名空间中......但我认为我不太明白......这是一个太简单的问题,但它会是对我来说很清楚,我想如果我明白为什么那不起作用..

这是我正在尝试的 exp:

var myApp = { 
    getTxt: function(x){
        x.click(function(){
        var txt = $(this).html();
        alert(txt);
        });
    };    
};

调用我的应用程序:

var box = $('.js-box');
alert(myApp.getTxt(box));

我认为 MyApp 的创建是正确的,但我不确定调用和触发 getTxt 函数..

这么称呼:

  myApp.getTxt(box)

并不意味着触发 x.click 功能..?为什么它会转动物体?

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

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

4

2 回答 2

0

您正在定义myApp为一个对象,所以这里有一个问题,您;在定义字段后给出,您不能。它会导致语法错误。

var myApp = { 
    getTxt: function(x){
        x.click(function(){
        var txt = $(this).html();
        alert(txt);
        });
    }                //<<<<-------------here was a semicolon,
};

而且您正在调用如下所示的函数alert会导致undefined警报,因为您没有从函数返回任何内容。打电话

myApp.getTxt(box)

它会在点击时显示内容。

演示

于 2014-08-24T06:50:58.247 回答
0

模块化方法怎么样。

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));
于 2014-08-24T08:27:24.413 回答