JavaScript proto和prototype的区别
在本文中,我们将探讨proto和原型的主题,包括它们的语法、示例,以及它们之间的区别,以及它们在不同方面的差异。
proto和prototype都是帮助创建数组、对象或函数的对象,可以直接使用这些特定的方法或对象,而不占用内存,甚至提供对其构造函数和所有数组方法(如push、pop等)的访问。
proto: 它是一个实际的对象,可以通过使用new创建的对象来从JavaScript继承属性。每个具有行为关联的对象都有一个内部属性[[prototype]]。
语法:
Object.__proto__ = value
示例:
JavaScript
function Student(name,age) {
this.name = name;
this.age = age;
}
var stu1 = new Student("John", 50);
// Object have proto property
stu1
// Also if apply strict equal to check
// if both point at the same
// location then it will return true.
Student.prototype === stu1._proto_
输出:

原型: 它是一个特殊的对象,意味着它拥有实例的共享属性和行为。它是一种从javascript继承属性的方式,因为它在每个函数声明中都可用。
语法:
objectTypeName.prototype.SharedPropertyName=value;
示例:
Javascript
// Constructor function
function Student(name, age) {
this.name = name;
this.age = age;
}
// Objects
var stu1 = new Student("gfg1", 25);
var stu2 = new Student("gfg2", 42);
// Prototype
Student.prototype.getName = function() { return this.name; }
// Function have property prototype
// Student
// Function call using object
stu1.getName();
// Constructor function
function Student(name, age) {
this.name = name;
this.age = age;
}
// Objects
var stu1 = new Student("gfg1", 25);
var stu2 = new Student("gfg2", 42);
// Prototype
Student.prototype.getName = function() { return this.name; }
// Function have property prototype
// Student
// function call using object
stu1.getName();
// Access prototype
Student.prototype
输出:

proto和prototype之间的区别:
| 原型(Prototype) | 原型(proto) |
|---|---|
原型是一种简单的方式,可以通过.prototype在多个对象之间共享行为和数据访问 |
原型也是一种方式,可以通过__proto__在多个对象之间共享行为和数据访问 |
| 所有的对象构造器(函数)都有原型属性。 | 所有的对象都有原型属性。 |
| 原型通过函数访问函数的原型。 语法:(function.prototype) | proto通过对象访问函数的原型。 语法:(object.proto) |
| 它主要用于解决在构造器模式下创建对象时的内存浪费问题,每个对象都有独立的行为。 | 它用于查找链中的方法、构造器等。 |
| 它是类的属性。 | 它是该类的实例的属性。 |
| 原型属性在声明时设置为函数。所有函数都有原型属性。 | proto属性在使用new关键字创建对象时设置为对象。所有新创建的对象都有proto属性。 |
| 它是在ECMAScript 6中引入的。 | 它是在ECMAScript 5中引入的。 |
它也被称为.prototype。 |
它也被称为dunder proto。 |
| 它在JavaScript中被广泛使用。 | 它在JavaScript中很少使用。 |
极客教程