Javascript 如何使一个对象从另一个对象继承而不使用_uproto__;?
我在Firefox中使用以下代码设置两个对象之间的原型继承关系:Javascript 如何使一个对象从另一个对象继承而不使用_uproto__;?,javascript,Javascript,我在Firefox中使用以下代码设置两个对象之间的原型继承关系: var a = {}; var b = {}; b.__proto__ = a; a.dosomething = function() { alert('ok'); }; b.dosomething(); //ok 但它只在Firefox上运行,因为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu仅在Firefox中 在其他web浏览器中,如果a和b
var a = {};
var b = {};
b.__proto__ = a;
a.dosomething = function() {
alert('ok');
};
b.dosomething(); //ok
但它只在Firefox上运行,因为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
仅在Firefox中
在其他web浏览器中,如果a
和b
是使用某种构造函数创建的,我可以使用
b.constructor.prototype = a;
设置继承关系
但是在上面的例子中,a
和b
的构造函数都是Object
。
我无法更改对象的原型
除了使用\uuuu proto\uuuu
之外,是否有其他方法可以设置继承关系?您可以使用。它创建一个对象,其原型就是传递给它的对象
var a={};
var b=对象。创建(a);
a、 dosomething=函数(){
警报(“正常”);
};
b、 dosomething();//好的
您可以使用。它创建一个对象,其原型就是传递给它的对象
var a={};
var b=对象。创建(a);
a、 dosomething=函数(){
警报(“正常”);
};
b、 dosomething();//确定
不要更改现有对象的原型
警告:更改对象的[[Prototype]]
本质上是
关于现代JavaScript引擎如何优化属性访问,有一个非常重要的问题
在每个浏览器和JavaScript引擎中运行缓慢。这个
改变继承对性能的影响是微妙的
距离遥远,且不限于在
obj.\uuuu proto\uuuu=…
语句,但可以扩展到
可以访问其[[Prototype]]
已更改的任何对象。
如果您关心性能,则应避免设置
对象的[[Prototype]]
。而是使用
所需的[[Prototype]]
使用
如果你这样做,标准的方法是,而不是
正确的方法是
var a={};
var b=对象。创建(a);
a、 dosomething=函数(){
console.log('ok');
};
b、 dosomething()代码>不要更改现有对象的原型
警告:更改对象的[[Prototype]]
本质上是
关于现代JavaScript引擎如何优化属性访问,有一个非常重要的问题
在每个浏览器和JavaScript引擎中运行缓慢。这个
改变继承对性能的影响是微妙的
距离遥远,且不限于在
obj.\uuuu proto\uuuu=…
语句,但可以扩展到
可以访问其[[Prototype]]
已更改的任何对象。
如果您关心性能,则应避免设置
对象的[[Prototype]]
。而是使用
所需的[[Prototype]]
使用
如果你这样做,标准的方法是,而不是
正确的方法是
var a={};
var b=对象。创建(a);
a、 dosomething=函数(){
console.log('ok');
};
b、 dosomething()代码>你的意思是\uuuuu proto\uuuuu
?是的,在上面的代码中是proto,你不是把b设置为a的原型吗?在下面的代码中,您为什么要执行b.constructor.prototype=a
而不是b.prototype=a
?同样,你是对的对象是js中的母原型,我只是想更好地理解这个问题。你的意思是\uuuuu proto\uuuuu
?是的,在上面的代码中是prototype,你不是将b设置为a的原型吗?在下面的代码中,您为什么要执行b.constructor.prototype=a
而不是b.prototype=a
?同样,你是对的对象是js中的母原型,我只是想更好地理解这个问题。这只是为了创建新的b(新对象),如果a和b已经存在,我可以设置继承关系吗?@arachide Yup。看我的编辑。太好了!感谢乐透这只是为了创建新的b(新对象),如果a和b已经存在,我可以设置继承关系吗?@arachide Yup。看我的编辑。太好了!谢谢