js之prototype理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js之prototype理解相关的知识,希望对你有一定的参考价值。

  我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法,也就是说这个prototype通过调用构造函数而创建的那个对象实例的原型。使用原型的好处就是可以让所有对象实例共享它所包含的属性和方法。

  例子,通过构造函数创建对象与通过原型模式创建比较。

  通过构造函数创建:

function Person(name, age) {//构造函数 首字母一般大写。
  this.name = name;
  this.age = age;        
  this.sayName = function() {
      alert(this.name);  
  }
}

var p1 = new Person(‘zhangsan‘, 21);
var p2 = new Person(‘lisi‘, 21);
alert(p1.sayName == p2.sayName);//false
//为什么为false,主要是因为每个方法都会在每个实例上重新创建一遍

   原型模式:

function Person(name, age) {
  this.name = name;
  this.age = age;  
}
Person.prototype.sayName = function() {
alert(this.name);
}

var p1 = new Person(‘zhangsan‘,21);
var p2 = new Person(‘lisi‘, 21);
alert(p1.sayName = p2.sayName);//true

 

  

  

以上是关于js之prototype理解的主要内容,如果未能解决你的问题,请参考以下文章

js常用代码片段

深入理解js面向对象中的prototype

深入理解js的prototype以及prototype的一些应用

转js老生常谈之this,constructor ,prototype

对JS prototype的理解

JS之理解对象