对于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('測試');