7

很简单:

我有代码Object.getPrototypeOf(...)用于获取 Dojo Widget 的继承类(只是一个 JS 对象)。Object.getPrototypeOf(...)IE8 不支持。我需要一个 IE 解决方法。有任何想法吗?提前致谢。

4

3 回答 3

11

Jon Resig 的 polyfill 工作 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;
        };
于 2013-04-06T13:27:38.447 回答
2

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

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

于 2013-09-24T09:53:46.260 回答
0

使用 Dojo.declared 创建的类及其超类存储元数据,因此您不需要使用 getPrototypeOf。

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

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

及其原型

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

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


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

于 2012-06-06T19:31:11.260 回答