首页 > 代码库 > js之prototype理解

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理解