|------原型:prototype
|-----类似于类样式
|-----优化代码 构造器
|-----构造函数可以生成对象
|-----var date=new Date(); 原型对象 Date是date的实例
|-----date.getFullYear(); date.getDate();
|-----原型链(继承,call apply instanceof)
|-----继承关系
<script> function person(){ this.foot=2; } person.prototype.getFoot=function(){ return this.foot; } //定义一个男的 function man(){ this.head=1;//赋值 } //继承关系:形成一个基本的原型链 man.prototype=new person(); man.prototype.getHead=function(){ return this.head;//返回值 } var m1=new man(); //alert(m1.getHead()); //alert(m1 instanceof Object); alert(m1 instanceof person); </script> |
|-------call 无参 用法:
<script> function person(){ this.aaa=["jack","rose","wang"]; } //无参的构造器 function man(){ person.call(this); } //继承 链也形成了 man.prototype=new person(); var m1=new man(); m1.aaa.push("xiao"); alert(m1.aaa); var m2=new man(); alert(m2.aaa); </script> |
|-------call 带参 用法:
<script> function person(name){ this.name=name; } //无参的构造器 function man(){ person.call(this,"雪山飞胡"); this.age=10; } var m1=new man(); alert(m1.age); alert(m1.name); </script> |
|------组合继承 : 类似于java的多态(重点 难点)
<script> function Humans(name){ this.name=name; this.clothing=["trousers","dress","jacket"]; } Humans.prototype.sayName=function(){ alert(this.name); }; function Man(name,age){ Humans.call(this,name); //继承属性 this.age=age; } Man.prototype=new Humans(); //继承方法 Man.prototype.sayAge=function(){ alert(this.age); };
var man1=new Man("mary",38); man1.clothing.push("coat"); alert(man1.clothing); //输出"trousers,dress,jacket,coat" man1.sayName(); //输出mary man1.sayAge(); //输出38 var man2=new Man("tom",26); alert(man2.clothing); //输出"trousers,dress,jacket" man2.sayName(); //输出tom man2.sayAge(); //输出26 </script> |