Prototype对象

Prototype对象

JavaScript是一种基于Prototype的语言,可促进对象之间相互获取属性和特征。在这里,每个对象都包含一个Prototype对象。
在JavaScript中,每当创建一个函数时,prototype属性就会自动添加到该函数中。此属性是一个Prototype对象,其中包含构造函数属性。

语法:

 ClassName.prototype.methodName

Prototype对象有什么要求?

每当在JavaScript中创建对象时,其相应的函数就会加载到内存中。因此,每次创建对象时都会创建该函数的新副本。
在基于Prototype的方法中,所有对象都共享相同的功能。这忽略了为每个对象创建功能的新副本的要求。因此,函数一次被加载到内存中。

Prototype链

在JavaScript中,每个对象都包含一个Prototype对象,该Prototype对象从中获取属性和方法。同样,对象的Prototype对象可能包含一个Prototype对象,该Prototype对象也获取属性和方法,依此类推。可以看作原型链。

Prototype对象_https://bianchenghao6.com_【JavaScript 基础】_第1张

JavaScript Prototype对象示例1

让我们看一个向构造函数添加新方法的示例。
 <script>
function Employee(firstName,lastName)
{
  this.firstName=firstName;
  this.lastName=lastName;
}
Employee.prototype.fullName=function()
  {
    return this.firstName+" "+this.lastName;
  }
var employee1=new Employee("Martin","Roy");
var employee2=new Employee("Duke", "William");
document.writeln(employee1.fullName()+"<br>");
document.writeln(employee2.fullName());
</script>
输出:
Martin Roy

Duke William

示例2

让我们看一个向构造函数添加新属性的示例。
 <script>
function Employee(firstName,lastName)
{
  this.firstName=firstName;
  this.lastName=lastName;
}
Employee.prototype.company="lidihuo"
var employee1=new Employee("Martin","Roy");
var employee2=new Employee("Duke", "William");
document.writeln(employee1.firstName+" "+employee1.lastName+" "+employee1.company+"<br>");
document.writeln(employee2.firstName+" "+employee2.lastName+" "+employee2.company);
</script>
输出:
Martin Roy lidihuo

Duke William lidihuo