function abc(){
//multiple variables and functions
a:function(){alert("a")};
}
function test(){
var k=abc();
k.a();
}
在上述情况下,我有一个巨大的函数abc()被分配给一个变量。我想调用可见的成员函数,如变量中的()。这是可能实现的,请给我一个示例代码,如果是这样的话。在JavaScript中为变量分配函数
function abc(){
//multiple variables and functions
a:function(){alert("a")};
}
function test(){
var k=abc();
k.a();
}
在上述情况下,我有一个巨大的函数abc()被分配给一个变量。我想调用可见的成员函数,如变量中的()。这是可能实现的,请给我一个示例代码,如果是这样的话。在JavaScript中为变量分配函数
嗯...违背@ krillgar的答案,我相信你期待你的abc()
返回新对象。类似这样的:
function abc(){
var privateVar;
return {
//multiple variables and functions
a:function(){alert("a")}
}
}
function test(){
var k=abc();
k.a();
}
好的。感谢您的支持! – krillgar
如果在函数后包含括号,则将函数的结果分配给变量。
如果你要分配的功能本身,只是省略括号:
var k = abc;
k.a();
编辑
每@Kuba Wyrostek的答案,@尖尖的评论,即a()
功能将不可适当暴露。您需要查看Module Pattern。你需要做的是将一个函数分配给一个变量,并让该函数返回你想在该函数之外使用的函数。这有助于封装。
从评论中的代码中很难判断用户生成的代码是什么,但我会尽我所能。
var abc = (function() {
var grabApi,
initialize;
// Just an example of how to assign an existing function
// to a property that will be exposed.
grabApi = SCORM2004_GrabAPI();
// This is an example of how to have a property that will be
// exposed be a custom function passing a parameter.
initialize = function(initString) {
return SCORM2004_GrabAPI().Initialize(initString);
};
return {
getApi: grabApi,
init: initialize
}
}());
然后,您可以在整个代码中使用这样的abc
对象。再次,这是试图给出一个例子,说明如何根据你的评论做我认为你要做的事。
// Assign the SCORM2004_GrabAPI function to a variable.
var SCORM2004_objAPI = abc.getApi();
// Call the Initialize function with an empty string.
abc.init("");
这是真的,但应该注意的是,函数“abc”中本地声明的称为“a”的函数将不作为函数对象的属性在“abc”外部可用。 – Pointy
SCORM2004_objAPI = SCORM2004_GrabAPI(); strResult = SCORM2004_objAPI.Initialize(“”);这是一个软件生成的代码。在这里,我需要编写SCORM2004_GrabAPI()并以这种方式返回对象,以便用户可以访问SCORM2004_objAPI.Initialize(“”);.我不明白我能如何实现它。 – Whoophee
谢谢你的收获,@Pointy。我没有想到通过这一切。我会更新并向库巴的回答点头。 – krillgar
你应该让它成为一个对象。通过这种方式,您可以访问其属性a
。
var abc ={
a:function(){alert("a")}
}
function test(){
var k=abc;//Ofcrse remove the parenthesis
k.a();
}
test();
等等......什么是“a:function()”部分?这似乎没有编译,除非它是我没有听说过的一些ES6的东西。 – Katana314
@ Katana314它看起来像OP已经截断了代码的相关位(例如大部分_Object Literal_) –
当你调用'abc'时,它是什么'return'? –