उदाहरण के लिए:कैसे जांचें कि जावास्क्रिप्ट क्लास दूसरे को विरासत में लेता है (ओबीजे बनाये बिना)?
function A(){}
function B(){}
B.prototype = new A();
मैं अगर वर्ग बी वर्ग एक विरासत में कैसे देख सकते हैं?
उदाहरण के लिए:कैसे जांचें कि जावास्क्रिप्ट क्लास दूसरे को विरासत में लेता है (ओबीजे बनाये बिना)?
function A(){}
function B(){}
B.prototype = new A();
मैं अगर वर्ग बी वर्ग एक विरासत में कैसे देख सकते हैं?
दे यह एक कोशिश B.prototype instanceof A
आप
B.prototype.constructor === A
के साथ सीधे विरासत का परीक्षण अप्रत्यक्ष विरासत परीक्षण करने के लिए कर सकते हैं, तो आप उपयोग कर सकते हैं
B.prototype instanceof A
(इस दूसरे समाधान पहले निर्वाण Tikku द्वारा दिया गया था)
नहीं है कि काम केवल जाँच करेगा कि माता-पिता वर्ग, सभी विरासत नहीं जीई श्रृंखला – Simon
बस इसे बहाल किया। धन्यवाद dystroy (इस उत्तर को अद्यतन करने के लिए भी) –
गॉटचास: ध्यान दें कि instanceof
अपेक्षाकृत काम नहीं करता है यदि आप एकाधिक निष्पादन संदर्भ/विंडो का उपयोग करते हैं। §§ देखें।
function f(_, C) { // instanceof Polyfill
while (_ != null) {
if (_ == C.prototype)
return true;
_ = _.__proto__;
}
return false;
}
संशोधित करना यह जाँच करने के लिए वर्ग सीधे हमें देता है:
इसके अलावा, https://johnresig.com/blog/objectgetprototypeof/ प्रति, इस एक विकल्प के कार्यान्वयन कि instanceof
के समान है है
function f(ChildClass, ParentClass) {
_ = ChildClass.prototype;
while (_ != null) {
if (_ == C.prototype)
return true;
_ = _.__proto__;
}
return false;
}
instanceof
खुद की जाँच करता है, तो obj.proto
f.prototype
है, इस प्रकार:
function A(){};
A.prototype = Array.prototype;
[]instanceof Array // true
और:
function A(){}
_ = new A();
// then change prototype:
A.prototype = [];
/*false:*/ _ instanceof A
// then change back:
A.prototype = _.__proto__
_ instanceof A //true
और:
function A(){}; function B(){};
B.prototype=Object.prototype;
/*true:*/ new A()instanceof B
यदि यह बराबर नहीं है, आद्य में आद्य की आद्य साथ बदली है चेक, फिर प्रोटो के प्रोटो के प्रोटो, और इसी तरह। इस प्रकार:
function A(){}; _ = new A()
_.__proto__.__proto__ = Array.prototype
g instanceof Array //true
और:
function A(){}
A.prototype.__proto__ = Array.prototype
g instanceof Array //true
और:
f=()=>{};
f.prototype=Element.prototype
document.documentElement instanceof f //true
document.documentElement.__proto__.__proto__=[];
document.documentElement instanceof f //false
https://stackoverflow.com/a/29543030/632951 और https://stackoverflow.com/q/30993434/632951 भी देखें – Pacerier
वापस 2017 के लिए:
जांच करता है, तो के लिए आप
A.isPrototypeOf(B)
** ES6 ** 'कक्षा' के बारे में क्या? 'कक्षा ए बी {} 'बढ़ाता है, फिर मैं कक्षा' ए' – Omid
@ ओमिड ** ईएस 6 कक्षा वाक्यविन्यास ** के उत्तराधिकारों की जांच कैसे कर सकता हूं ** ज्यादातर विशेष _syntax_।दृश्यों के पीछे "कक्षाओं" का वास्तविक संचालन नहीं बदला है और इस प्रकार आप अभी भी 'एप्रोटोटाइप' के साथ काम कर सकते हैं ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/कक्षाएं – cepharum