2012-06-06 4 views
5

Ganz einfach:IE8 getPrototypeOf Methode

Ich habe Code Object.getPrototypeOf(...) die geerbten Klassen eines Dojo Widget (nur ein JS-Objekt) zu erhalten. wird in IE8 nicht unterstützt. Ich brauche einen Internet Explorer. Irgendwelche Ideen? Danke im Voraus.

+4

John Resig Blog-Post sollte helfen: http://ejohn.org/blog/objectgetprototypeof/ –

+0

Das tat es. Wirf diesen bösen Jungen in eine Antwort und ich akzeptiere. Vielen Dank. –

Antwort

0

Mit Dojo.declared erstellte Klassen speichern Metadaten mit ihren Superklassen, sodass Sie getPrototypeOf nicht verwenden müssen.

Ich glaube, Sie können die erste Super erhalten mit

MyClass.prototype.constructor._meta.bases[1] 

und dessen Prototyp mit

MyClass.prototype.constructor._meta.bases[1].prototype 

(Basen [0] scheint die Klasse selbst zu sein)


Warum brauchen Sie sogar den Prototyp? Es ist sehr wahrscheinlich, dass Sie am Ende wird einige Feature Neuimplementierung, die bereits von dojo.declare vorgesehen

10

Jon Resig polyfill arbeitet http://ejohn.org/blog/objectgetprototypeof/

ich gemacht habe es noch kleinere

if (typeof Object.getPrototypeOf !== "function") 
    Object.getPrototypeOf = "".__proto__ === String.prototype 
     ? function (object) { 
      return object.__proto__; 
     } 
     : function (object) { 
      // May break if the constructor has been tampered with 
      return object.constructor.prototype; 
     }; 
+0

@ gonzoc0ding, Ist das gut genug für Sie, um es zu akzeptieren? – Adaptabi