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.defineProperty
IE < 9 (DOM 要素を除く) では使用できないのと同じように、これに対する解決策はないと思います。
だから、私の質問は次のとおりです。IE7 + 8でこの動作を再現するための非ハッキーな解決策はありますか?
そして、「ハッキー」とは、次のようなことを意味します。
var myObject = document.createElement('fake');