मैं इस पहेली को हल करने वाली जावास्क्रिप्ट ओओपी समस्या को हल करने की कोशिश कर रहा हूं।जावास्क्रिप्ट कक्षाएं और चरणीय संदर्भ
तो मैं निम्नलिखित वर्ग है:
var ClassA = function() {
this.initialize();
}
ClassA.prototype = {
methods : ['alpha','beta','gama'],
initialize : function() {
for (var i in this.methods) {
this[this.methods[i]] = function() {
console.log(this.methods[i]);
}
}
}
}
var a = new ClassA();
जब मैं हर विधि मैं इसके बारे में नाम मुद्रित करने के लिए उम्मीद सही कहते हैं,?
a.alpha(); // returns gama ?!?
a.beta(); // returns gama ?!?
a.gama(); // returns gama
लेकिन जब मेरी कक्षा इस तरह दिखता है:
var ClassB = function() {
this.initialize();
}
ClassB.prototype = {
methods : ['alpha', 'beta', 'gama'],
initialize: function() {
for (var i in this.methods) {
this.addMethod(this.methods[i]);
}
},
addMethod: function(method) {
this[method] = function() {
console.log(method);
}
}
}
var b = new ClassB();
b.alpha(); // returns alpha
b.beta(); // returns beta
b.gama(); // returns gama
क्यों हो रहा है लेकिन यहाँ मैं क्या मिलता है?
क्या यह [गलत तरीका] नहीं है (http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript#answer-3010848) जेएस में एक सरणी के माध्यम से लूपिंग के? – PeeHaa
@RepWhoringPeeHaa - हां, लूप के लिए एक सादा इस्तेमाल किया जाना चाहिए, लेकिन यह समस्या नहीं है। – nnnnnn
@nnnnnn मुझे पता है कि यह एक टिप्पणी है और जवाब नहीं :-) – PeeHaa