Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IE8中使用javascript协议_Javascript_Internet Explorer 8 - Fatal编程技术网

在IE8中使用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

嗨,我有两个javascript对象

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在标准方面比较保守和/或落后,而不是将已知的未来标准表示为非标准。