我知道这听起来很傻,但现在我的好奇心让我坚持这个想法.是否可以声明一组键/值对,如var collection = {a:"1", b:"2"},然后有第三对说c: "3" + b.value?
第一种方式,使用属性getter.
请注意c,酒店为b和c.
var collection = {
a: 1,
b: 2,
get c() {
return this.a + this.b;
}
};
console.log(collection.a); // 1
console.log(collection.b); // 2
console.log(collection.c); // 3Run Code Online (Sandbox Code Playgroud)
第二种方式,使用ES6中的简洁方法或ES5中更"经典"的函数声明.
请注意c现在是一个功能.
let collection = {
a: 1,
b: 2,
c() {
return this.a + this.b;
}
};
console.log(collection.a); // 1
console.log(collection.b); // 2
console.log(collection.c()); // 3 called as a functionRun Code Online (Sandbox Code Playgroud)
第三种方式,使用专用函数进行初始化.
如果您有更复杂的初始化,可能在更多属性上,并且可以像"构造函数"一样工作,这将非常有用.
var collection = {
a: 1,
b: 2,
c: 3,
init: function() {
this.c = this.a + this.b;
}
};
collection.init();
console.log(collection.a); // 1
console.log(collection.b); // 2
console.log(collection.c); // 3Run Code Online (Sandbox Code Playgroud)
第四种方式,直接在c财产上.
var collection = {
a: 1,
b: 2,
c: undefined
};
collection.c = collection.a + collection.b;
console.log(collection.a); // 1
console.log(collection.b); // 2
console.log(collection.c); // 3Run Code Online (Sandbox Code Playgroud)
关于具体你的问题,我会getter在前面使用一个并附加值"3" 来解决它b(请注意结果是字符串类型),例如:
var collection = {
a: 1,
b: 2,
get c() {
return '3' + this.b;
}
};
console.log(collection.a); //1
console.log(collection.b); //2
console.log(collection.c); //"32"
console.log(typeof collection.c); // stringRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |