在IE8中使用javascript协议
嗨,我有两个javascript对象在IE8中使用javascript协议,javascript,internet-explorer-8,Javascript,Internet Explorer 8,嗨,我有两个javascript对象 var john = { firstname: 'John', lastname: 'Smith' } var jane = { firstname: 'Jane' } 这样做: jane.__proto__ = john; 我可以访问简的财产,也可以访问约翰的财产 例如,如果IE8不支持\uuuuu proto\uuuuuu,那么编写此代码的等效方法是什么: jane.__proto__ = john; 谢谢 IE中没有等效的或标准的机制。(Fir
var john = { firstname: 'John', lastname: 'Smith' }
var jane = { firstname: 'Jane' }
这样做:
jane.__proto__ = john;
我可以访问简的财产,也可以访问约翰的财产
例如,如果IE8不支持\uuuuu proto\uuuuuu
,那么编写此代码的等效方法是什么:
jane.__proto__ = john;
谢谢 IE中没有等效的或标准的机制。(Firefox中的属性是ECMAScript标准中未指定的非标准扩展。) [[prototype]]对象只能通过在函数对象上设置
prototype
属性来指定,函数对象在构造新对象之前充当构造函数。然而,[[prototype]]可以在以后进行变异
无论如何,这里有一个从现有对象指定[[prototype]]的小例子。请注意,[[prototype]]赋值必须在创建新对象之前完成。ECMAScript第5版介绍了可以执行以下操作并浅克隆对象的方法
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
\uuuu proto\uuuu
目前不是标准用法
遵循ECMAScript标准,符号someObject。[[Prototype]]用于指定someObject的原型。自从ECMAScript 5以来,[[Prototype]]是通过访问器对象.getPrototypeOf()
和对象.setPrototypeOf()来访问的
因此,您可以使用getPrototypeOf()
访问
就像铬一样
> Object.getPrototypeOf(Object) === Object.__proto__
< true
>Object.getPrototypeOf(Object)==Object.\uu proto__
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。更准确的答案是IE 8在标准方面比较保守和/或落后,而不是将已知的未来标准表示为非标准。