作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有关于代码 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;
}
}
}
现在,由于闭包属性,_secret
在 getSecret
和 setSecret
函数的范围内。这样他们就可以访问它。
关于javascript - 使用闭包来制作私有(private)属性javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792506/
我是一名优秀的程序员,十分优秀!