gpt4 book ai didi

javascript - 使用闭包来制作私有(private)属性javascript

转载 作者:行者123 更新时间:2023-11-30 17:07:02 26 4
gpt4 key购买 nike

我有关于代码 war 的提示

“在 javascript 对象上没有私有(private)属性这样的东西!但是,也许有?

实现一个函数 createSecretHolder(secret),它接受任何值作为 secret 并返回一个只有两个方法的对象"

我很确定它希望我使用闭包来实现这一点,我已经阅读了如何在此处执行此操作:

Private variables and closures

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Contributor_s_Guide/Private_Properties

这是我的代码:

function createSecretHolder(secret) {
return {
var _secret = secret;
this.getSecret = function(){
return _secret;
}

this.setSecret = function(secret){
_secret = secret;
}
}
}

但是,我得到这个错误:

[eval]:6
var _secret = secret;
^
SyntaxError: Unexpected token =
at Object. ([eval]-wrapper:6:22)
at
at evalScript (node.js:536:25)
at startup (node.js:80:7)
at node.js:906:3

我尝试创建一个具有私有(private)值的对象字面量来保存 secret 的值,并且主要遵循我上面列出的来源中的示例。如何创建一个只有两种方法来获取和设置数据的闭包,以及在不添加其他属性的情况下将 secret 的值存储在哪里?

最佳答案

您正试图返回一个对象字面量,其中您不能有赋值语句。要具有闭包属性,您需要将变量存储在函数作用域中,如下所示

function createSecretHolder(secret) {
var _secret = secret;

return {
getSecret: function() {
return _secret;
},

setSecret: function(secret) {
_secret = secret;
}
}
}

现在,由于闭包属性,_secretgetSecretsetSecret 函数的范围内。这样他们就可以访问它。

关于javascript - 使用闭包来制作私有(private)属性javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792506/

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