如何在匿名函数内扩展对象

时间:2013-08-09 08:27:54

标签: javascript function client anonymous-function inheritance

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

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

通常情况下,我会使用原型,例如:

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

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

1 个答案:

答案 0 :(得分: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

我希望这会有所帮助。