0

我想将另一个名为 myFunction() 的函数添加到 CoreTeamObject 中,该函数在匿名函数中被声明为本地。这可能吗?

!function ($) {
    var CoreTeamObject = function () {
        var coreTeamVar1;   // ...
        this.someState = false;   // ...
        coreTeamFunction: function () { /* ... */ }
    };
}(window.jQuery);

通常,我会使用以下原型:

CoreTeamObject.prototype.myFunction = function(){ 
  return 
}; 

但我根本不知道如何访问该对象。

4

1 回答 1

1

你根本做不到。函数中的变量是私有的,不能从外部访问。

! function () {
    var foo = 1;
}();
// Calling `foo` will throw a referenceError here.

// It doesn't even work with classes...
var foo = function () {
    var bar = 2;
};
var bax = new foo();
// `bax.bar` doesn't exist.

但是,有一些解决方法。您可以将它们存储在全局变量中(虽然是个坏主意):

! function (w) {
    w.foo = 3;
}(window);
// window.foo = 3
// foo = 3

或者,如果您可以将其重写为一个类:

var foo = function () {
    this.bar = 4;
};
var bax = new foo();
// bax.bar = 4

我希望这有帮助。

于 2013-08-09T09:40:41.460 回答