Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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,以下两个类实现之间的区别是什么 function Animal() { this.feed = function () { } } function Animal () { } Animal.prototype.feed = function () { }; 我尝试创建这两个函数,但都以相似的方式工作。尽管它们在功能上相似,但性能肯定会有所不同。在第一种情况下,每次实例化该类时,您都会为该对象分配一个新的函数实例,这会对CPU和内存的使用产生影响。第二个版本将函数分配给原型,因此

以下两个类实现之间的区别是什么

function Animal() {
  this.feed = function () {
  }
}


function Animal () {
}

Animal.prototype.feed = function () {
};

我尝试创建这两个函数,但都以相似的方式工作。

尽管它们在功能上相似,但性能肯定会有所不同。在第一种情况下,每次实例化该类时,您都会为该对象分配一个新的函数实例,这会对CPU和内存的使用产生影响。第二个版本将函数分配给原型,因此函数对象只创建一次,并且只分配一次。

通常,人们认为Javascript不是面向对象的编程语言

构造函数

构造函数自动为新创建的对象设置原型对象。此原型对象存储在ConstructorFunction.prototypeproperty中。在构造函数中,它存储新对象中的所有属性和方法

构造函数是类的JavaScript版本。您会注意到,它具有函数中预期的所有功能,但仍然没有返回任何内容这个关键字基本上是说,每当创建这些对象实例中的一个时,对象的属性将等于传递给构造函数调用的名称值,feed()方法也将用于构造函数调用

原型继承

原型是用于继承其他特性的机制,但其工作方式与经典继承不同。Prototype充当一个模板,它继承属性及其行为方式。 对象原型还有一个原型对象,它继承了核心原型对象的方法和属性

这被称为原型链proto从构造函数的prototype属性派生的。在javascript原型继承中,它实际上并不复制对象,而是在对象实例与其原型之间建立链接

在原型继承中,它创建类到对象的链接或引用。 每个对象都可以有另一个对象作为其原型。然后前一个对象继承其原型的所有属性。对象通过内部属性[[prototype]]指定其原型

请查看下面的参考链接,这些链接有很好的描述


没有区别,第一个类是类内有方法,另一个是通过原型扩展了类。关于如何在应用程序中维护和构造类,这一切都是有意义的。请参考下面的链接:-Bhavesh我已经发布了一个答案,但如果您感到困惑,请告诉我,我将尝试以更恰当的方式进行解释。
function Animal(){
    this.feed = function(){
    }
}
function Animal () {
}

Animal.prototype.feed = function () {
};