मैं डैनियल एक्स {SUPER: SYSTEM}
। मूर का उपयोग करना पसंद करता हूं । यह एक अनुशासन है जो सच्चे उदाहरण चर, विशेषता आधारित विरासत, वर्ग पदानुक्रम और कॉन्फ़िगरेशन विकल्प जैसे लाभ प्रदान करता है। नीचे दिया गया उदाहरण सत्य उदाहरण चर का उपयोग दिखाता है, जो मुझे विश्वास है कि सबसे बड़ा लाभ है। यदि आपको उदाहरण चर की आवश्यकता नहीं है और केवल सार्वजनिक या निजी चर से खुश हैं तो संभवतः सरल प्रणाली हैं।
function Person(I) {
I = I || {};
Object.reverseMerge(I, {
name: "McLovin",
age: 25,
homeState: "Hawaii"
});
return {
introduce: function() {
return "Hi I'm " + I.name + " and I'm " + I.age;
}
};
}
var fogel = Person({
age: "old enough"
});
fogel.introduce(); // "Hi I'm McLovin and I'm old enough"
वाह, यह वास्तव में अपने आप में बहुत उपयोगी नहीं है, लेकिन एक उपवर्ग जोड़ने पर एक नज़र डालें:
function Ninja(I) {
I = I || {};
Object.reverseMerge(I, {
belt: "black"
});
// Ninja is a subclass of person
return Object.extend(Person(I), {
greetChallenger: function() {
return "In all my " + I.age + " years as a ninja, I've never met a challenger as worthy as you...";
}
});
}
var resig = Ninja({name: "John Resig"});
resig.introduce(); // "Hi I'm John Resig and I'm 25"
एक अन्य लाभ मॉड्यूल और विशेषता आधारित विरासत रखने की क्षमता है।
// The Bindable module
function Bindable() {
var eventCallbacks = {};
return {
bind: function(event, callback) {
eventCallbacks[event] = eventCallbacks[event] || [];
eventCallbacks[event].push(callback);
},
trigger: function(event) {
var callbacks = eventCallbacks[event];
if(callbacks && callbacks.length) {
var self = this;
callbacks.forEach(function(callback) {
callback(self);
});
}
},
};
}
व्यक्ति वर्ग के एक उदाहरण में बाइंडेबल मॉड्यूल शामिल है।
function Person(I) {
I = I || {};
Object.reverseMerge(I, {
name: "McLovin",
age: 25,
homeState: "Hawaii"
});
var self = {
introduce: function() {
return "Hi I'm " + I.name + " and I'm " + I.age;
}
};
// Including the Bindable module
Object.extend(self, Bindable());
return self;
}
var person = Person();
person.bind("eat", function() {
alert(person.introduce() + " and I'm eating!");
});
person.trigger("eat"); // Blasts the alert!
प्रकटीकरण: मैं डैनियल एक्स मूर हूं और यह मेरी है {SUPER: SYSTEM}
। यह जावास्क्रिप्ट में एक वर्ग को परिभाषित करने का सबसे अच्छा तरीका है।