javascript - 在 IE8 中使用 javascript __proto__

标签 javascript internet-explorer-8

你好,我在 javascript 中有这两个对象

var john = { firstname: 'John', lastname: 'Smith' }

var jane = { firstname: 'Jane' }

这样做:

jane.__proto__ = john;

我可以访问 jane 的属性,也可以访问 john 的属性

例如,如果 IE8 不支持 __proto__,那么这样写的等价物是什么:

jane.__proto__ = john;

谢谢!

最佳答案

IE 中没有等效或标准的机制。 (Firefox 中的 __proto__ 属性是非标准扩展,因为在 ECMAScript 标准中未指定。)

[[prototype]] 对象只能通过在函数对象上设置prototype 属性来指定,该函数对象之前 构建一个新对象。然而,[[prototype]] 以后可以改变

无论如何,这是一个从现有对象指定 [[prototype]] 的小例子。请注意,[[prototype]] 赋值必须在创建新对象之前完成。 ECMAScript 第 5 版介绍 Object.create它可以执行以下浅克隆一个对象。

function create (proto) {
    function f () {}
    f.prototype = proto
    return new f
}
var joe = create({})
var jane = create(joe)
joe.name = "joe"                   // modifies object used as jane's [[prototype]]
jane.constructor.prototype === joe // true
jane.__proto__ === joe             // true  -- in Firefox, but not IE
jane.name                          // "joe" -- through [[prototype]]
jane.constructor.prototype = {}    // does NOT re-assign jane's [[prototype]]
jane.name                          // "joe" -- see above

关于javascript - 在 IE8 中使用 javascript __proto__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431911/

相关文章:

javascript - 如何将 Pyramid 的FileResponse接收到ajax中?

javascript - 为什么我的正则表达式让我写 ","(逗号)?

javascript - 使用 Mongoose 查询 MongoDB 中的模板文字

javascript - 使用 NodeJS 和 JayData 的 OData 服务

windows - XP、Vista、Win7 之间 IE8 行为的差异?

jquery - IE8 中带有固定标题的表格

javascript - IE8 : "The system cannot find the path specified" error when acessing window. 本地存储

javascript - 替换 addEventListener

javascript - 试图让 window.URL 在 IE8 中工作。获取未定义的错误

javascript - 如何使用文本节点作为在其前面插入 <a> 元素的指示,在元素的文本之前插入元素