关于prototype

对于js的原型部分是学了忘,忘了学,不断的重复。因此将本身的理解结合几个简单的例子来讲明原型的简单的用法,项目中用到的时候直接就能够拿来用。(面试的时候仍是要去看别的大神洋洋洒洒的文字,我就不献丑了。)面试

函数的 prototype 属性是在函数做为构造器使用的时候,做为其构造对象的原型。
而只用经过new建立的函数,才有prototype属性。函数

prototype能够添加属性和方法。this

简单来说:spa

function Person(name){
      this.name=name;
};
var person1=new Person('Byron');
Person.prototype.printName=function(){
      alert(this.name);
};
console.log(person1);
//由于person1是经过new来建立的,因此具备prototype属性,当Person又在后面添加一个函数的时候,person1一样能够访问。也能够说person1继承了Person的原型(prototype)

可是若是咱们不去new,而是直接赋值:prototype

function Person(name){
      this.name=name;
};
var person1=Person('Byron');
Person.prototype.printName=function(){
      alert(this.name);
};
console.log(person1);
//由于person1是直接赋值的,没有prototype属性,因此就没法继承Person的属性,打印结果就是undefined

一样的,咱们给其添加其余的属性也是一样的结果。code

每一个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用做构造函数调用(使用new操做符调用)的时候,新建立的对象会从原型对象上继承属性和方法。对象

大概就是这么个意思。blog

var Client = function(){};
Client.prototype.subscribe = function(name) {
   this.name = name;
  return this.name; }
var test = new Client('測試'); test.subscribe('測試');
相关文章
相关标签/搜索