Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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_Prototypal Inheritance - Fatal编程技术网

Javascript 原型继承和原型对象,为什么不';你不习惯到这种程度吗?

Javascript 原型继承和原型对象,为什么不';你不习惯到这种程度吗?,javascript,prototypal-inheritance,Javascript,Prototypal Inheritance,我做了一个快速搜索,但似乎找不到这个问题的答案,只是指在继承时复制函数原型。 为什么不向构造函数原型obj添加属性,而不是使用this关键字呢。我确信有理由不这么做,但我正试图更好地理解javascript的细微差别。例如,在普通原型继承中,您可以使用“this” 当原型上有properties时,每次实例化类时,即在示例中,根据以下两条语句,您都会使用新值覆盖属性: let spike=new Dog("Spike",6,"lab"); let rover=new Dog("rover",8

我做了一个快速搜索,但似乎找不到这个问题的答案,只是指在继承时复制函数原型。 为什么不向构造函数原型obj添加属性,而不是使用this关键字呢。我确信有理由不这么做,但我正试图更好地理解javascript的细微差别。例如,在普通原型继承中,您可以使用“this”


当原型上有
properties
时,每次实例化类时,即在示例中,根据以下两条语句,您都会使用新值覆盖属性:

let spike=new Dog("Spike",6,"lab");

let rover=new Dog("rover",8,"poodle");
这里,根据您的期望,
spike.name
应该是
spike
rover.name
应该是
rover
,但是如果您执行此代码并进行检查,它们都是
rover

创建新实例时,
rover
的属性将覆盖
swike
的属性。 每次创建新实例时,都会覆盖属性,原因如下
附加到原型的方法
属性
只创建一次,每次创建新实例时都继承到它们的子类


我们创建构造函数和新实例的原因是,每个实例都有不同的属性,如
Spike
rover
。对于方法,方法是构造函数的泛型,可以在每次创建新实例时对不需要创建的所有实例重用,因此,我们将它们附加到
原型
,而不是在构造函数中使用
这个
关键字定义它。

当原型上有
属性
时,每次实例化类时,即在示例中,从以下两条语句中,您都将使用新值覆盖属性:

let spike=new Dog("Spike",6,"lab");

let rover=new Dog("rover",8,"poodle");
这里,根据您的期望,
spike.name
应该是
spike
rover.name
应该是
rover
,但是如果您执行此代码并进行检查,它们都是
rover

创建新实例时,
rover
的属性将覆盖
swike
的属性。 每次创建新实例时,都会覆盖属性,原因如下
附加到原型的方法
属性
只创建一次,每次创建新实例时都继承到它们的子类


我们创建构造函数和新实例的原因是,每个实例都有不同的属性,如
Spike
rover
。对于方法,方法是构造函数的泛型,构造函数可以对所有实例重用,而不必在每次创建新实例时都创建这些实例,因此,我们将它们附加到
原型
上,而不是在构造函数中用
这个
关键字来定义它。

看看当你按自己的方式做时,
spike.name
是什么,你就会明白为什么人们不按你的方式做。看看当你按自己的方式做时,
spike.name
是什么,你会明白为什么人们不按你的方式做事。