-1

我有一个小问题,因为我使用 Object.create 编写了我的插件,并且它仅适用于 IE9+。

我的插件定义:

$.fn.MYPL = function (options) {
    return this.each(function () {
        myplg = Object.create(MYPL);
        myplg.init(options, this);
    });
};

但在每个 JS 代码之前,我都有以下内容:

if (typeof Object.create !== "function") {
    Object.create = (function () {
        function F() {} // created only once
        return function (o) {
            F.prototype = o; // reused on each invocation
            return new F();
        };
    })();
}

它在 IE9+ 上运行良好,但 IE6 和 IE7(甚至 IE8)似乎不支持 Object.create 还是什么?我错过了什么吗?

4

2 回答 2

0

检查维基百科的JavaScript 版本历史。如果您找到 1.8.5 版本 - 这是您发现此对象工厂方法可用的语言版本 - Internet Explorer 的第 9 版是支持该版本的版本。

ECMAScript 5 兼容性表也包含此信息。

您也可以尝试使用 Microsoft 的 IE 虚拟机之一(可从此处获得,或者对于非常旧版本的 IE,Multiple IE

来自哪个版本的IE可以支持Object.create(null)?

于 2013-10-05T11:11:14.480 回答
0

较旧的 IE 版本将不支持Object.create. 在这里阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create

尝试使用此处描述的构造函数创建对象https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain

于 2013-10-05T11:18:44.563 回答