我总是在Firefox(3.6.14)中得到以下异常:
TypeError: Object.create is not a function
Run Code Online (Sandbox Code Playgroud)
这非常令人困惑,因为我非常确定它是一个功能,并且代码在Chrome上按预期工作.
负责此行为的代码行如下:
Object.create( Hand ).init( cardArr );
Object.create( Card ).init( value, suit );
Run Code Online (Sandbox Code Playgroud)
如果有人想看到所有代码,它来自扑克图书馆gaga.js:https://github.com/SlexAxton/gaga.js
也许有人知道如何让它在Firefox中运行?
使用 Object.create() 继承 JavaScript?
或者
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
建议 Object.create() 是在 ES5 中设计的,旨在提供一种简单的方式来继承 JavaScript 对象。
这按预期工作,如下所示:
const A = function() {};
A.prototype.x = 10;
A.prototype.say = function() {
console.log(this.x);
};
const a = new A();
a.say(); //10
const b = Object.create(a);
b.say(); //10Run Code Online (Sandbox Code Playgroud)
但是,现在我想继承一个对象,例如
Object(3).
出于某种原因,人们(在大多数情况下,用某个问题很难解决问题的人)倾向于问“你为什么需要这个?” 这对规范来说真的无关紧要,因此,可能最好指定。
我尝试创建一种根据需要为任何 JavaScript 对象提供类型的方法。
幸运的是,每个原始值3都可以通过Object(3).
现在,我尝试了Object.create在这种情况下如何工作,但它不起作用。
const a = Object(3);
console.log(
a
);//[Number: 3]
console.log(
a.toString()
);// 3
const b = Object.create(a);
console.log(
b
);//{}
console.log(
Object.getPrototypeOf(b)
);
console.log( …Run Code Online (Sandbox Code Playgroud)javascript inheritance object prototypal-inheritance prototype-chain