के लिए विकल्प मान्य है कि मैं एक जावास्क्रिप्ट नोब (सर्वोत्तम रूप से) हूं। निम्नलिखित कोड ठीक काम करता प्रतीत होता है। कोई भी विचार कैसे "प्रारंभकर्ता" दृष्टिकोण को बनाए रखने और इसे __proto__
का उपयोग किए बिना और कन्स्ट्रक्टर कार्यों में सबकुछ परिवर्तित किए बिना काम करता है?बहिष्कृत __proto__
var Employee =
{
paygrade: 1,
name: "",
dept: "general",
init: function()
{
return this;
},
salary: function()
{
return this.paygrade * 30000;
}
};
var WorkerBee =
{
paygrade: 2,
projects: ["Project1", "Project2"],
init: function()
{
this.__proto__ = Inherit_Employee; // Inherit My Employee "Pseudo Prototype"
return this;
}
};
var SalesPerson =
{
dept: "Sales",
quota: 100,
init: function()
{
this.__proto__ = Inherit_WorkerBee; // Inherit My WorkerBee "Pseudo Prototype"
return this;
}
};
var Engineer =
{
dept: "Engineering",
machine: "im the start machine",
init: function()
{
this.__proto__ = Inherit_WorkerBee; // Inherit My WorkerBee "Pseudo Prototype"
return this;
}
};
var Inherit_Employee = Object.create(Employee).init(); // Create My Employee Pseudo-Prototype
var Inherit_WorkerBee = Object.create(WorkerBee).init(); // Create My WorkerBee Pseudo-Prototype
var jane = Object.create(Engineer).init();
var jill = Object.create(Engineer).init();
मेरे पास एक दृष्टिकोण है जो काम करता है, लेकिन मुझे आश्चर्य है कि कोई और अधिक कुशल दृष्टिकोण है या नहीं। अभी के लिए, मैंने जो किया है वह उन पंक्तियों को प्रतिस्थापित करता है जो __proto__
को संदर्भित करते हैं, इस तरह मेरे अपने उत्तराधिकारी समारोह में कॉल के साथ।
init: function()
{
inherit(this, WorkerBee); // Inherit WorkerBee
return this;
}
और यह है मेरी इनहेरिट() फ़ंक्शन
function inherit(childObject, parentObject)
{
// childObject inherits all of parentObjects properties
//
for (var attrname in parentObject)
if (childObject[attrname] == undefined)
childObject[attrname] = parentObject[attrname];
// childObject runs parentObject 'init' function on itself
//
for (var attrname in parentObject)
if (typeof parentObject[attrname] == "function")
if (attrname == 'init')
parentObject[attrname].call(childObject);
}
यह जानना अच्छा है आपकी मदद कर सकता है: http://www.webdeveasy.com/javascript-prototype/ – Naor