var object={
firstString: 'You must register in order...',
secondString:'You must re-enter your password in order to...',
thirdString:'You must re-enter your password in order to...'
};
如您所见,第二和第三个字符串是相同的。因为这在我现在使用的对象中多次发生,我想将第三个对象与第二个对象链接以节省一些字节
我尝试了以下但是它们不起作用
var object={
firstString:'You must register in order...',
secondString:'You must re-enter your password in order to...',
thirdString:this.secondString
};
var object={
firstString:'You must register in order...',
secondString:'You must re-enter your password in order to...',
thirdString:object.secondString
};
谢谢
答案 0 :(得分:7)
您无法在对象文字中构造自引用表达式。您必须使用另一个语句跟进声明初始化。
var object={
firstString='You must register in order...',
secondString:'You must re-enter your password in order to...',
};
object.thirdString = object.secondString;
如果您真的想在单个表达式中初始化变量,可以使用函数:
var object = function() {
var o = {
firstString='You must register in order...',
secondString:'You must re-enter your password in order to...',
};
o.thirdString = o.secondString;
return o;
}();
请注意,现代JavaScript VM内核在某些情况下会注意到重复的字符串常量,并优化掉冗余并非不可能。我不知道他们是否这样做。
答案 1 :(得分:4)
你不能按照你想要的方式去做。对象文字在完成之前是不完整的,并且在完成之前无法引用它们。您已将字符串设置为变量,然后使用该变量。
var prompt = 'You must re-enter your password in order to...';
var obj = {
msg1: prompt,
msg2: prompt,
otherMessage: 'Some string'
};
答案 2 :(得分:1)
最简单的方法是定义你所指的字符串是什么。例如。 string passwordAsk ='您必须重新输入密码才能......'。这也可以让您在将来更轻松地更改所有这些内容。
答案 3 :(得分:1)
您可以尝试这样做:
var Obj = (function () {
function Obj() {
this.obj = {};
}
Obj.prototype.set = function(name, value) {
this.obj[name] = value;
};
return Obj;
})();
var object = new Obj();
object.set('firstString', 'You must register in order...');
object.set('secondString', 'You must re-enter your password in order to...');
object.set('thirdString', object.obj.secondString);
然后您可以使用object.obj
作为对象。
您可以创建多个Obj
对象,您可以以相同的方式使用它们。
您可以这样做,而不是使用一些复杂的Obj
课程。
var object = {};
object.firstString = 'You must register in order...';
object.secondString = 'You must re-enter your password in order to...';
object.thirdString = object.secondString;
答案 4 :(得分:1)
或者,如果你想玩得开心,可以这样试试(免责声明:我不会这样做,但我很喜欢这个挑战)
function selfReferencer(generator) {
var temp = generator.apply({});
return generator.apply(temp);
}
然后像这样构建你的对象:
var obj = selfReferencer(function() { return {
firstString: 'You must register in order...',
secondString: 'You must re-enter your password in order to...',
thirdString: this.secondString
}});