Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
Javascript 原型继承与原型属性_Javascript - Fatal编程技术网

Javascript 原型继承与原型属性

Javascript 原型继承与原型属性,javascript,Javascript,在javascript中,对象如何从多个父对象继承 我想人们会这样做: Fruit.prototype = new Plant (); Fruit.prototype = new anotherPlant (); 但是水果的prototype属性(prototype对象)将设置为什么?它仍然是Fruit的原始父构造函数的原始Parent.prototype吗?您不能。事实上,支持多重继承的语言并不多 您所要做的就是将水果的原型设置为植物的一个实例,然后用另一个植物的一个实例覆盖它。这和简单的事

在javascript中,对象如何从多个父对象继承

我想人们会这样做:

Fruit.prototype = new Plant ();
Fruit.prototype = new anotherPlant ();

但是水果的prototype属性(prototype对象)将设置为什么?它仍然是Fruit的原始父构造函数的原始Parent.prototype吗?

您不能。事实上,支持多重继承的语言并不多

您所要做的就是将
水果的
原型
设置为
植物的一个实例
,然后用另一个植物的一个实例覆盖它。这和简单的事情是一样的

Fruit.prototype = new anotherPlant ();
但是,不要忘记JavaScript有一个继承链。使用上述方法,如果另一个工厂的原型是
Plant
,那么您将从这两个对象继承

function Plant() {

}

Plant.prototype.foo = 'foo';
Plant.prototype.baz = 'baz-a';

function AnotherPlant() {

}

AnotherPlant.prototype = new Plant();

AnotherPlant.prototype.bar = 'bar';
AnotherPlant.prototype.baz = 'baz-b';

var a = new AnotherPlant();

console.log(a.foo); // foo
console.log(a.bar); // bar
console.log(a.baz); // baz-b

JavaScript的继承与大多数其他语言不同;它使用原型继承,这意味着该语言通过遵循用于创建实例的构造函数的
prototype
属性来确定函数(类,如果这样更容易的话)的继承链。

您不能。事实上,支持多重继承的语言并不多

您所要做的就是将
水果的
原型
设置为
植物的一个实例
,然后用另一个植物的一个实例覆盖它。这和简单的事情是一样的

Fruit.prototype = new anotherPlant ();
但是,不要忘记JavaScript有一个继承链。使用上述方法,如果另一个工厂的原型是
Plant
,那么您将从这两个对象继承

function Plant() {

}

Plant.prototype.foo = 'foo';
Plant.prototype.baz = 'baz-a';

function AnotherPlant() {

}

AnotherPlant.prototype = new Plant();

AnotherPlant.prototype.bar = 'bar';
AnotherPlant.prototype.baz = 'baz-b';

var a = new AnotherPlant();

console.log(a.foo); // foo
console.log(a.bar); // bar
console.log(a.baz); // baz-b

JavaScript的继承与大多数其他语言不同;它使用原型继承,这意味着该语言通过遵循用于创建实例的构造函数的
prototype
属性来确定函数(类,如果这样做更容易的话)的继承链。

检查这个检查这个hmmm。。。。如果我做水果,Matt也会这样做。prototype=newplant();我正在将prototype属性(而不是prototype属性)设置为指向Plant.prototype。prototype同样具有两个特征,即用于定义子对象继承的原型属性,以及指向父对象的原型属性。例如,做两件事是同一件事?@tomatos:如果你这样做,你将继承
foo
baz
植物的属性。你期望发生什么?Sry我不清楚,我正在试图区分prototype属性和prototype属性,并试图找出什么是水果。prototype=new Plant();这句话很感人。似乎这一句话可能有两个作用。继承=继承Plant.prototype方法并将Plant.prototype指定为其原型对象(父指针)。@tomatos:属性和属性是相同的
Fruit.prototype=new Plant()
正在将
Fruit
的prototype属性(或属性)设置为
Plant
的新实例。JavaScript的继承是原型的,而不是基于类的,这可能会让您感到困惑;看看怎么会这样?一个是为其子实例定义要继承的属性,另一个是指向其自身父实例的指针。我来自另一种语言。是的,检查了所有的图坦卡门和所有的东西。还是不知道一件事怎么能做两件不同的事。。。。如果我做水果,Matt也会这样做。prototype=newplant();我正在将prototype属性(而不是prototype属性)设置为指向Plant.prototype。prototype同样具有两个特征,即用于定义子对象继承的原型属性,以及指向父对象的原型属性。例如,做两件事是同一件事?@tomatos:如果你这样做,你将继承
foo
baz
植物的属性。你期望发生什么?Sry我不清楚,我正在试图区分prototype属性和prototype属性,并试图找出什么是水果。prototype=new Plant();这句话很感人。似乎这一句话可能有两个作用。继承=继承Plant.prototype方法并将Plant.prototype指定为其原型对象(父指针)。@tomatos:属性和属性是相同的
Fruit.prototype=new Plant()
正在将
Fruit
的prototype属性(或属性)设置为
Plant
的新实例。JavaScript的继承是原型的,而不是基于类的,这可能会让您感到困惑;看看怎么会这样?一个是为其子实例定义要继承的属性,另一个是指向其自身父实例的指针。我来自另一种语言。是的,检查了所有的图坦卡门和所有的东西。还是不知道一件事怎么能做两件不同的事。