gpt4 book ai didi

javascript - 访问 JS 函数的私有(private)方法

转载 作者:行者123 更新时间:2023-11-30 12:19:12 25 4
gpt4 key购买 nike

我有以下 javascript 代码

function MyFunc () {

var add = function () {
return "Hello from add";
};

var div = function () {
return "Hello from div";
};

var funcCall = function (obj) {

if (!obj) {
throw new Error("no Objects are passed");
}
return obj.fName();


};

return {
func: function (obj) {
funcCall(obj);
}
};

}

var lol = new MyFunc();

lol.func({fName: add}); 被传递时,它应该调用函数私有(private)函数 add 或者当 lol.func({fName : div}); 被传递,它应该调用私有(private) div 函数。我尝试过的方法不起作用。我怎样才能做到这一点。

DEMO

最佳答案

在这种情况下,最好将内部函数存储在对象中,这样您就可以轻松地使用变量名访问它。所以如果你定义一个函数“map”

var methods = {
add: add,
div: div
};

您可以使用 methods[obj.fName](); 调用它。

完整代码:

function MyFunc() {

var add = function () {
return "Hello from add";
};

var div = function () {
return "Hello from div";
};

var methods = {
add: add,
div: div
};

var funcCall = function (obj) {

if (!obj) {
throw new Error("no Objects are passed");
}

return methods[obj.fName]();
};

return {
func: function (obj) {
return funcCall(obj);
}
};

}

var lol = new MyFunc();
console.log( lol.func({fName: 'add'}) );

关于javascript - 访问 JS 函数的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com