В моем примере ниже, на основании некоторых условий, я должен либо вызвать метод foo из моего класса, либо метод foo из alternative.js; Я назначаю метод в переменной myFunc и вызываю эту переменную, однако, если я хочу вызвать метод foo myClass, он ломается, потому что имя не определено в MyClass.prototype.myclass. Есть ли какое-нибудь обходное решение? Пожалуйста, дайте мне знать, если вам нужно больше разъяснений:Присвоение метода переменной в Javascript
MyClass.prototype.test = function(name) {
var myClass;
var myFunc;
shouldWork = true;
if(shouldWork){
p = require('alternative.js')
myFunc = p['foo'];
}else{
myClass= this.myclass(name);
myFunc = myClass['foo'];
}
myFunc('bar');// if "shouldWork" is true it works, but if it is false, it fails
//In other words, myClass.foo('bar') works but calling
//the variable which is set to myClass['foo']
}
MyClass.prototype.myclass = function(name) {
// Here I do some operations on name and if it is undefined it breaks!
// name gets undefined if you foo method of myClass if you have it in
//a variable, becuse it is not assiging name which is from prototype
}
В вашем вопросе есть три разные капитализации 'myclass', которые действительно запутывают. Пожалуйста, не преднамеренно пишите код таким образом. Если это ошибка, то, пожалуйста, исправьте свой вопрос. Кроме того, у вас есть локальная переменная, называемая 'myclass', и свойство экземпляра, называемое' myclass'. Это снова действительно запутанный сценарий. Пожалуйста, дайте переменным очень описательные имена и не делайте несколько переменных очень похожими. – jfriend00
jfriend00 Извините за это! Большое спасибо в любом случае :-) –
Я буду помнить ваш совет ... Трудно было воспроизвести простой пример моей проблемы .... –