IE8 getPrototypeOf method

IE8 getPrototypeOf method

本文关键字:method getPrototypeOf IE8      更新时间:2023-09-26

很简单:

我有使用 Object.getPrototypeOf(...) 的代码来获取 Dojo 小部件(只是一个 JS 对象)的继承类。 IE8 不支持Object.getPrototypeOf(...)。我需要一个IE解决方法。有什么想法吗?提前谢谢。

Jon Resig's polyfill workshttp://ejohn.org/blog/objectgetprototypeof/

我让它变得更小

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;
        };

使用 https://github.com/kriskowal/es5-shim。除此之外,它还支持Object.getPrototypeOf。

来源:来自 Modernizr 项目的 ECMAScript 5 polyfills

使用

Dojo.declare 创建的类将元数据与其超类一起存储,因此您不需要使用 getPrototypeOf。

我认为你可以得到第一个超类

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

及其原型

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

(bases[0] 似乎是类本身)


虽然你为什么甚至需要得到原型?很可能你最终会重新实现 dojo.declare 已经提供的一些功能。