关于prototype

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

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

prototype可以添加属性和方法。

简单来讲:

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,而是直接赋值:

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

同样的,我们给其添加其他的属性也是同样的结果。

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

大概就是这么个意思。

var Client = function(){};
Client.prototype.subscribe = function(name) {
   this.name = name;
  return this.name; }
var test = new Client('測試'); test.subscribe('測試');

猜你喜欢

转载自www.cnblogs.com/sixrookie/p/10212794.html