最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

Javascript Object.create not working in Firefox - Stack Overflow

matteradmin3PV0评论

I always get the following exception in Firefox (3.6.14):

TypeError: Object.create is not a function

It is quite confusing because I am pretty sure it is a function and the code works as intended on Chrome.

The lines of code responsible for this behavior are the following:

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

It is from a poker library gaga.js if someone wants to see all the code: .js

Maybe someone knows how to get it working in Firefox?

I always get the following exception in Firefox (3.6.14):

TypeError: Object.create is not a function

It is quite confusing because I am pretty sure it is a function and the code works as intended on Chrome.

The lines of code responsible for this behavior are the following:

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

It is from a poker library gaga.js if someone wants to see all the code: https://github./SlexAxton/gaga.js

Maybe someone knows how to get it working in Firefox?

Share Improve this question edited Jan 31, 2013 at 12:25 hippietrail 17k21 gold badges109 silver badges179 bronze badges asked Mar 4, 2011 at 20:51 dominosdominos 4121 gold badge11 silver badges21 bronze badges 1
  • Alex is on SO now and then so maybe he'll answer :-) – Pointy Commented Mar 4, 2011 at 20:54
Add a ment  | 

3 Answers 3

Reset to default 13

Object.create() is a new feature of EMCAScript5. Sadly it is not widely supported with native code.

Though you should be able to add non-native support with this snippet.

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

Which I believe is from Crockford's Javascript: The Good Parts.

Object.create is part of ES5 and only available in Firefox 4.

As long as you are not doing any add-on development for browsers, you should not expect browsers to implement ES5 features (especially older browsers). You'd have to provide your own implementation then (like the own provided by @Squeegy).

I use this way(also working in 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);
Post a comment

comment list (0)

  1. No comments so far