JavaScript中proto和prototype的区别

JavaScript中proto和prototype的区别

在本文中,我们将讨论什么是proto 和 prototypes,它们的语法,示例,它们之间存在什么差异,以及它们如何不同,以及它们在不同方面如何不同。

Proto和prototype都是帮助创建数组、对象或函数的对象,并直接提供对这些特定方法或对象的访问,而不需要占用内存,甚至它将提供对其构造函数和所有数组方法的访问,如push、pop等。

Proto

它是一个实际的对象,它提供了一种从JavaScript继承属性的方法,这个对象是用new创建的。每个有行为关联的对象都有内部属性[[prototype]]。

语法:

Object.__proto__ = value

示例:

function Student(name,age) {
 this.name = name;
 this.age = age;
}
var stu1 = new Student("John", 50);
  
// Ubject 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中proto和prototype的区别

对象具有proto属性

JavaScript中proto和prototype的区别

对象和函数引用相同的原型

Prototype

Prototype是一个特殊的对象,这意味着它持有实例的共享属性和行为。这是一种从javascript继承属性的方式,因为它在每个函数声明中都可用。

语法:

objectTypeName.prototype.SharedPropertyName=value;

示例:

// 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

输出:

JavaScript中proto和prototype的区别

函数具有属性Prototype

JavaScript中proto和prototype的区别

使用对象调用函数

JavaScript中proto和prototype的区别

访问Prototype属性

proto和prototype的区别:

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程