Javascript 为什么我不能删除具有动态路由的对象属性?
为什么不能删除具有动态路由的对象属性? 我浏览的网站:Javascript 为什么我不能删除具有动态路由的对象属性?,javascript,string,object,Javascript,String,Object,为什么不能删除具有动态路由的对象属性? 我浏览的网站: Object.byString=函数(o,s){ s=s.replace(/\[(\w+)\]/g,.$1');//将索引转换为属性 var a=s.分割('.'); 对于(变量i=0,n=a.length;i
Object.byString=函数(o,s){
s=s.replace(/\[(\w+)\]/g,.$1');//将索引转换为属性
var a=s.分割('.');
对于(变量i=0,n=a.length;i
您需要调用属性上的删除
Object.byString(someObject,route)
只返回该属性的值。@VLAZ这不是返回属性:第1部分吗Object.byString(someObject,route)
返回属于该属性的值。不是财产。属性是对象的一部分,而不是可以传递的原子单位。@VLAZ您能为我的代码发送一个示例吗?route=“part1.a”;删除Object.byString(someObject,route)[x]代码>
Object.byString = function(o, s) {
s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
var a = s.split('.');
for (var i = 0, n = a.length; i < n; ++i) {
var k = a[i];
if (k in o) {
o = o[k];
} else {
return;
}
}
return o;
}
var someObject = {
'part1' : {
'a':{
'name': 'Part 1',
'size': '20',
'qty' : '50'
},
'b':{}
},
'part2' : {
'name': 'Part 2',
'size': '15',
'qty' : '60'
}
};
x = "name";
route = "part1.a."+x+"";
// this works not
delete Object.byString(someObject, route);
console.log(Object.byString(someObject, route));
//Returns: Part 1
// this works
delete someObject['part1']['a']['name'];
console.log(someObject['part1']['a']['name']);
//Returns: undefined