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