Javascript 如何在匿名函数中扩展对象
我想将另一个名为myFunction()的函数添加到CoreTeamObject中,该对象在匿名函数中声明为local。这可能吗Javascript 如何在匿名函数中扩展对象,javascript,function,client,anonymous-function,inheritance,Javascript,Function,Client,Anonymous Function,Inheritance,我想将另一个名为myFunction()的函数添加到CoreTeamObject中,该对象在匿名函数中声明为local。这可能吗 !function ($) { var CoreTeamObject = function () { var coreTeamVar1; // ... this.someState = false; // ... coreTeamFunction: function () { /* ... */ }
!function ($) {
var CoreTeamObject = function () {
var coreTeamVar1; // ...
this.someState = false; // ...
coreTeamFunction: function () { /* ... */ }
};
}(window.jQuery);
通常,我会将原型与以下内容结合使用:
CoreTeamObject.prototype.myFunction = function(){
return
};
但我根本不知道如何访问该对象。你根本不知道。函数中的变量是私有的,不能从外部访问
! 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.
然而,有一些变通办法。您可以将它们存储在一个全局变量中(但这不是个好主意):
或者,如果您可以将其重写为类:
var foo = function () {
this.bar = 4;
};
var bax = new foo();
// bax.bar = 4
我希望这能有所帮助。你是说从匿名函数之外的函数吗?如果是这样,则无法直接访问
CoreTeamObject
,除非它以某种方式公开。是的,从外部。谢谢。您目前如何使用该对象?对于显示的最小代码,CoreTeamObject
在匿名函数之外根本无法访问,因此向其添加额外的方法肯定是次要的,而不是首先使其可访问?另外,您现有的代码有一个语法错误,即您有一个标签coreTeamFunction:
,后跟一个没有名称的函数语句。具体来说,它是一个daterangepicker。这种用法只需要在一些jQuery选择器上调用.daterangepicker(…)。只是一个普通的jQuery插件——它迭代给定的元素,并使用新的元素创建对象。
var foo = function () {
this.bar = 4;
};
var bax = new foo();
// bax.bar = 4