4

MDNObject.createは、 1 つの引数を使用するためのポリフィルを指定しています。

if (!Object.create) {
    Object.create = (function(){
        function F(){}

        return function(o){
            if (arguments.length != 1) {
                throw new Error('Object.create implementation 
                                 only accepts one parameter.');
            }
            F.prototype = o
            return new F()
        }
    })()
}

しかし、私は 2 番目の引数を利用して、このようなものを IE < 9 で機能させたいと考えています。

o = Object.create(Object.prototype);


// Example where we create an object with a couple of sample properties.
// (Note that the second parameter maps keys to *property descriptors*.)
o = Object.create(Object.prototype, {
  // foo is a regular "value property"
  foo: { writable:true, configurable:true, value: "hello" },
  // bar is a getter-and-setter (accessor) property
  bar: {
    configurable: false,
    get: function() { return 10 },
    set: function(value) { console.log("Setting `o.bar` to", value) }
}});

Object.definePropertyIE < 9 (DOM 要素を除く) では使用できないのと同じように、これに対する解決策はないと思います。

だから、私の質問は次のとおりです。IE7 + 8でこの動作を再現するための非ハッキーな解決策はありますか?

そして、「ハッキー」とは、次のようなことを意味します。

var myObject = document.createElement('fake');
4

0 に答える 0