gpt4 book ai didi

javascript - jQuery 中的对象原型(prototype)函数中断

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:38 26 4
gpt4 key购买 nike

有人帮助我设计了一个很棒的 JavaScript 对象原型(prototype),但它在 jQuery 中出现了问题。在 jQuery 中它给出了一个错误:

jquery.min.js:2 未捕获类型错误:V[g].exec 不是函数

我发现 Object.defineProperty block (如下)阻止了 jQuery 错误。但这样就行不通了。当我调用 multiparter() 时,它只返回“未定义”。谁能帮忙解决一下吗?

Object.prototype.multiparter = function(route) {
var newObj = this;
route.forEach(function(key) {
newObj = newObj[key]
});
return newObj;
};

Object.defineProperty(Object.prototype, 'multiparter',{
value : function() {},
enumerable : false
});

var mekBldr = {
mecha: {
heads: {
head01: {
cost: 0,
classification: ''
}
},
rightLimbs: {
legs: {
rightleg01: {
cost: 0,
classification: ''
}
}
},
leftLimbs: {
legs: {
leftleg01: {
cost: 0,
classification: ''
}
}
}
}
};
var part = 'heads';
var stuck2 = [part];
var part1 = 'leftLimbs';
var part2 = 'legs';
var stuck = [part1, part2];
mekBldr.mecha.multiparter(stuck2).head01.cost = 2;
//goal: mekBldr.mecha.leftLimbs.legs.leftleg01.cost = 5;
mekBldr.mecha.multiparter(stuck).leftleg01.cost = 5;

最佳答案

通过将传递给描述符,您刚刚用该空函数覆盖了该方法(即不执行任何操作并返回未定义的函数)。如果你真的想define a method on Object.prototype (你绝对不应该这样做),你需要使用

Object.defineProperty(Object.prototype, 'multiparter', {
value: function(route) {
return route.reduce(function(newObj, key) {
return newObj[key]
}, this);
},
enumerable: false,
configurable: true
});

关于javascript - jQuery 中的对象原型(prototype)函数中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com