Javascript Object.create not working in Firefox

前端 未结 3 1816
自闭症患者
自闭症患者 2020-12-03 19:29

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 pre

相关标签:
3条回答
  • 2020-12-03 20:04

    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).

    0 讨论(0)
  • 2020-12-03 20:21

    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);
    
    0 讨论(0)
  • 2020-12-03 20:23

    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.

    0 讨论(0)
提交回复
热议问题