是否可以使用字符串中的值向javascript / json对象添加属性?
let myObj= {};
for{prop in propsToAdd){
myObj.addProp(prop.name, prop.type);
}
myObj.addProp = function (name, type) {
// here i need to add another json object
// with the name as the name of the property
// and a property called type with the value of the param type
}
示例:
myObj = {}
myObj.addProb("title","string");
myObj.addProp("id","integer")
的结果应与:
相同myObj = {
"title": {
"type": "string"
},
"id": {
"type": "integer"
},
}
我在考虑使用JSON.stringify
(一起构建字符串)和JSON.parse
。
但如果有一种更优雅的方式会很好。
答案 0 :(得分:2)
你可以这样做。请注意,两者都可能需要addProp
,而不是addProb
:
const myObj = {};
// keep the function from being printed when printing the object
Object.defineProperty(myObj, 'addProp', {
value: function addProp(key, type) {
myObj[key] = { type };
},
enumerable: false
});
myObj.addProp("title","string");
myObj.addProp("id","integer");
console.log(myObj);
答案 1 :(得分:1)
您只需使用brackets
表示法为对象添加属性:
myObj[name] = {type: type};
let myObj = {};
myObj.addProp = (name, type) => {
myObj[name] = {type: type};
}
myObj.addProp("title", "string");
myObj.addProp("id", "integer");
console.log(myObj);
答案 2 :(得分:1)
myObj.addProp = function (name, type) {
this[name] = {type: type};
}
您可以通过两种不同的方式向对象添加属性。
myObj.prop = 'val';
myObj['prop'] = 'val'
在上面的函数中,this
指的是要添加属性的对象。
答案 3 :(得分:1)
let myObj = {};
myObj.addProp = (name, type) => {
myObj[name] = {type: type};
}
myObj.addProp("title","string");
myObj.addProp("id","integer");
delete myObj.addProp;
console.log(myObj);
答案 4 :(得分:1)
您可以使用构造函数而不是alter Object prototype:
function myObj() {
this.addProp = function(name, type) {
this[name] = {type: type};
}
}
var myVal = new myObj();