IE8 getPrototypeOf方法(IE8 getPrototypeOf method)

2019-06-25 06:21发布

很简单:

我使用的代码Object.getPrototypeOf(...)得到一个Dojo小部件(只是一个JS对象)的继承类。 Object.getPrototypeOf(...)没有在IE8的支持。 我需要一个IE浏览器解决。 有任何想法吗? 提前致谢。

Answer 1:

乔恩Resig的填充工具的工作原理http://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;
        };


Answer 2:

使用https://github.com/kriskowal/es5-shim 。 在其他方面,它支持Object.getPrototypeOf 。

来源: ECMAScript中从Modernizr的项目5个polyfills



Answer 3:

与Dojo.declared店与他们的父类的元数据创建的类,这样你就不需要使用getPrototypeOf。

我认为你可以得到与第一超

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

其原型

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

(碱基[0]似乎是类本身)


虽然干嘛还要需要得到原型? 它很可能你最终会重新实现已经由dojo.declare提供的一些功能



文章来源: IE8 getPrototypeOf method