原型(prototype)学习笔记

JavaScript接触有一段时间了,可是以前用的都只是皮毛。现在参加工作了,觉得写的比较多的倒是那些JS文件了,后台的很多东西都可以采用工具生成。今天就好好学习了Javascript中重要的一个知识点---prototype。下面是一些自己的笔记,和大家共享下:

Javascript的所有function对象都有一个prototype属性,这个prototype本身又是一个object类型,因此可以给这个prototype对象添加任意的属性和方法。既然prototype是对象的原型,那么由该函数构造出来的对象应该都会具有这个原型的特征。事实上,在构造函数的prototype上定义的所有属性和方法,都可以通过其构造的对象直接访问和调用的。也就是说prototype提供了一群同类对象共享属性和方法的机制。
比如给一个函数增加一个方法:
<script type="text/javascript">
function Person(name){
this.name=name;
};
Person.prototype.sayHello=function(){
alert("Hello,you are "+this.name);、//这样就可以给Person增加了一个sayHello方法;
};

var bills=new Person("BillsGates");
bills.sayHello();
</script>

  

好了,现在大家在看下面的一段代码:

<script type="text/javascript">

function Person(name){
this.name=name;
};

Person.prototype.sayHello=function(){
alert("Hello,this is"+this.name);
};

function Employee(name,salary){
Person.call(this,name);
this.salary=salary;
};
Employee.prototype=new Person();
Employee.prototype.showMoney=function(){
alert(this.name+" "+this.salary);
};

var zhang=new Person("zhangsan");
var li=new Employee("lisi",35435);

zhang.sayHello();
li.sayHello();
li.showMoney();
</script>

 

  

其中有一段代码是这样的:Employee.prototype=new Person();刚看到这句代码的时候我真是看不明白,为什么要将一个基类的实例赋给子类的原型。看到后面才知道,这样做的目的是为了后面通过子类对象也可以直接调用基类的prototype的方法,这样就可以让子类直接访问基类定义的prototype方法了。

prototype的一个重要应用就是原型扩展,这样就可以扩展了Javascript的功能。待叙。。。。。。

原文地址:https://www.cnblogs.com/zhangminghui/p/3043150.html