Javascript Object.create не работает в Firefox - PullRequest
4 голосов
/ 04 марта 2011

Я всегда получаю следующее исключение в 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?

Ответы [ 3 ]

13 голосов
/ 04 марта 2011

Object.create() - это новая функция EMCAScript5.К сожалению, он не поддерживается широко с собственным кодом.

Хотя вы должны иметь возможность добавить не нативную поддержку с этим фрагментом.

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

Как я полагаю, из Javascript Крокфорда: Хорошие части .

0 голосов
/ 24 января 2016

Я использую этот способ (также работает в 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);
0 голосов
/ 04 марта 2011

Object.create является частью ES5 и доступна только в Firefox 4.

Пока вы не занимаетесь разработкой дополнений для браузеров, вы не должны ожидать, что браузерыреализовать функции ES5 (особенно в старых браузерах).Тогда вам нужно будет предоставить собственную реализацию (, например, собственную, предоставленную @ Squeegy ).

...