Кто-то помог мне с отличным прототипом объекта для JavaScript, но он разбивается на jQuery. В JQuery он дает ошибку:Функция прототипа объекта Ломать в jQuery
jquery.min.js: 2 Uncaught TypeError: V [г] .exec не является функцией
я обнаружил, что блок Object.defineProperty (ниже) останавливает ошибку JQuery , Но тогда это не сработает. Когда я вызываю multipater(), он просто возвращает «undefined». Может ли кто-нибудь помочь с решением?
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;
Спасибо за информацию. Похоже, я не должен решать свою проблему, используя Object.prototype. Что является лучшим решением? В нижней части моего примера кода вы можете увидеть «цель». Это то, чего я пытаюсь выполнить. Любая помощь будет принята с благодарностью. – user1592980
Сделать это статической функцией: 'multiparter (mekBldr.mecha, stuck2) .head01.cost' не метод. Однажды вы столкнетесь с объектом, у которого есть свое свойство 'multiparter', и ваш код сломается. – Bergi
Нравится? 'code'function multiparter (theObj, route) { route.forEach (функция (ключ) { theObj = theObj [ключ] }); return theObj; } 'code' – user1592980