通常我这样做:
$.fn.MYPL = function (options) {
return this.each(function () {
myplg = Object.create(MYPL);
myplg.init(options, this);
});
};
IE6,IE7和IE8不支持Object.create 。我刚才意识到,我可以将{strong> Object.create 替换为new,如:
var g = new Graph();
但我不知道..如何更改我的插件定义?
我试过了:
var myplg = new MYPL();
但它不起作用。任何帮助表示赞赏。
答案 0 :(得分:2)
您可以polyfill Object.create
以便在IE7和IE8中使用它。
答案 1 :(得分:1)
我看到MDN polyfill不支持任何属性对象,所以我写了一个稍微更完整的实现,至少可以让你设置值和警告如果有可用的控制台,那么关于其他人,并且还会抛出正确的错误消息。
if (!Object.create) {
Object.create = (function () {
function _Object() {}
return function(proto, props) {
var o, k, d;
if (proto !== null && typeof proto !== 'object')
throw new TypeError('Object prototype may only be an Object or null');
_Object.prototype = proto;
o = new _Object();
for (k in props) {
if (typeof props[k] !== 'object')
throw new TypeError('Property description must be an object: ' + props[k]);
for (d in props[k])
if (d === 'value')
o[k] = props[k].value;
else
if (console && console.warn)
console.warn('Object.create implementation does not support: ' + d);
}
return o;
};
}());
}
答案 2 :(得分:0)
Object.create(MYPL)
设置对象原型。对于基于构造函数的方法,您可以尝试以下代码:
function MYPLConstructor() {}
for (var key in MYPL) {
MYPLConstructor.prototype[key] = MYPL[key];
}
var myplg = new MYPLConstructor();