在早期版本的JavaScript中使用Object.create()

在早期版本的JavaScript中使用Object.create(),javascript,pdf,prototype,Javascript,Pdf,Prototype,我试图在一个只支持JavaScript 1.5的XFA pdf中使用pdf.js,因此无法识别Object.create()和call()。pdf.js中Object.create()有近30种用法 有没有办法添加一个函数来扩展Object()以包含create()?这只是为了向后兼容 凯尔明白了: if(typeof Object.create !== "function") { Object.create = function (o) { function F() {

我试图在一个只支持JavaScript 1.5的XFA pdf中使用pdf.js,因此无法识别Object.create()和call()。pdf.js中Object.create()有近30种用法

有没有办法添加一个函数来扩展Object()以包含create()?这只是为了向后兼容

凯尔

明白了:

if(typeof Object.create !== "function") {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}
谢谢你的回复。是的,我不知道为什么我把call()包括在里面


Kyle

“…因此无法识别Object.create()和call()…”非常确定
call
大约从1998年就开始使用JavaScript了。你只需查看MDN文档中的polyfill:(这太复杂了——使用Adobe Reader使用PDF.js解析PDF)是的,我知道。但是使用Acrobat JS API进行我所做的操作会使Adobe Reader 10崩溃。请注意,真实的
对象.create
有第二个参数,在ES5之前的环境中无法填充该参数。填充时,我建议查看是否有第二个参数并引发异常。除了@T.J.Crowder所说的之外,标准的
Object.create
允许您将
null
设置为原型,但是您发布的典型填充在创建新对象时将失败。因此,您可能需要测试
null
,并替换
Object.prototype
。。实际上,由于这似乎是针对Mozilla的JS,您可能会使用
\uuuuuu proto\uuuu
作为补丁,如果我记得的话,它将接受
null
<代码>var new_o={};新的(o)协议(o);;返回新的_o好的捕获cookie。我会用的。幸运的是,pdf.js没有使用Object.create的第二个参数。