gpt4 book ai didi

javascript - 如果需要更改函数中的变量必须是公共(public)变量吗?

转载 作者:行者123 更新时间:2023-12-02 18:23:48 26 4
gpt4 key购买 nike

例如:

function foo() {

var bar = "", obj = {};

obj.change = function(key, val){
// how change bar?
return obj;
}

return obj;
}

foo().change("bar", "foo");

如果bar将是obj.bar答案是obj[key] = val;但是bar将被公开。我希望能够以类似 jQuery 的风格设置 bar,但不将其公开。

最佳答案

您可以将代码封装在 IIFE(立即调用函数表达式)中,并创建两个对象,一个用于 public 成员,另一个用于 private 成员。通过使用闭包,您可以保持 private 私有(private),并公开您需要的内容。

var foo = (function() {

var public = {},
private = {
name: 'John'
};

public.change = function(key, val) {
private[key] = val;
};

public.say = function() {
return 'Hello '+ private.name;
};

return public;
}());

console.log(foo.say()); //=> "Hello John"

foo.change('name', 'Mike');
console.log(foo.say()); //=> "Hello Mike"

了解 Revealing Module Pattern了解更多信息。

关于javascript - 如果需要更改函数中的变量必须是公共(public)变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580078/

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