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的功能。待叙。。。。。。