4

Firefox (3.6.14) では常に次の例外が発生します。

TypeError: Object.create is not a function

これは関数であり、コードは Chrome で意図したとおりに機能すると確信しているため、かなり混乱しています。

この動作の原因となるコード行は次のとおりです。

Object.create( Hand ).init( cardArr );
Object.create( Card ).init( value, suit );

誰かがすべてのコードを見たい場合は、ポーカー ライブラリ gaga.js からのものです: https://github.com/SlexAxton/gaga.js

多分誰かが Firefox で動作させる方法を知っていますか?

4

3 に答える 3

13

Object.create()は EMCAScript5 の新機能です。残念ながら、ネイティブ コードでは広くサポートされていません。

ただし、このスニペットを使用して非ネイティブ サポートを追加できるはずです。

if (typeof Object.create === 'undefined') {
    Object.create = function (o) { 
        function F() {} 
        F.prototype = o; 
        return new F(); 
    };
}

これは Crockford のJavascript: The Good Partsからのものだと思います。

于 2011-03-04T20:53:21.807 に答える
0

私はこの方法を使用します(ECMAScript 3でも動作します):-

function customCreateObject(p) {
   if (p == null) throw TypeError(); // p must be a non-null object
   if (Object.create)  // If Object.create() is defined...
     return Object.create(p);  // then just use it.
   var t = typeof p; // Otherwise do some more type checking
   if (t !== "object" && t !== "function") throw TypeError();
    function f() {}; // Define a dummy constructor function.
   f.prototype = p; // Set its prototype property to p.
   return new f(); // Use f() to create an "heir" of p.
}

var obj = { eid: 1,name:'Xyz' };
customCreateObject(obj);
于 2016-01-24T08:39:38.310 に答える
0

Object.createES5 の一部であり、Firefox 4 でのみ利用可能です。

ブラウザー用のアドオン開発を行っていない限り、ブラウザーが ES5 機能を実装することを期待すべきではありません (特に古いブラウザー)。その場合、独自の実装を提供する必要があります(@Squeegy によって提供される独自の実装など)。

于 2011-03-04T20:53:03.647 に答える