js原型模式&call和apply&函数的继承

原型模式

functionPerson(name,age,job){

this.name=name;

this.age=age;

this.job=job;

Person.prototype.showName=function(){

alert(this.name);

}

Person.prototype.showAge=function(){

alert(this.age);

}

Person.prototype.showJob=function(){

alert(this.job);

}

}

//先去自己的对象中找showName函数,再去构造函数的原型找

varLucy=newPerson('lucy',18,'测试鼠');

//重写自身对象中的方法,不会影响其它对象

Lucy.showName=function(){

alert('我的名字是'+this.name);

}

Lucy.showName();//我的名字是lucy

varLily=newPerson('lily',19,'市场鸡');

Lily.showName();//lily

alert(Lucy.showName==Lily.showName);//false

call和apply

call和apply的区别

二者都可以改变当前的this,区别在于apply方法要将参数放入数组中再传参

*/

functionaa(a,b){

alert('我的this是'+this+',我的a是'+a+',我的b是'+b);

}

//我的this是[object Window],我的a是2,我的b是3

//aa(2,3);

//我的this是abc,我的a是2,我的b是3

/aa.call('abc',2,3);

//我的this是abc,我的a是2,我的b是3

aa.apply('abc', [2,3]);

函数的继承


functionFclass(name,age){

this.name=name;

this.age=age;

}

Fclass.prototype.showName=function(){

alert(this.name);

}

Fclass.prototype.showAge=function(){

alert(this.age);

}

//子类

functionSclass(name,age,job){

//属性用call或者apply的方式来继承

Fclass.call(this, name, age);

this.job=job;

//方法继承:将父类的一个实例赋值给子类的原型属性

Sclass.prototype=newFclass();

Sclass.prototype.showJob=function(){

alert(this.job);

}

//由于已经继承了父类的属性和方法,所以可以直接调用

varDriver=newSclass('tom',18,'老司机');

Driver.showName();

Driver.showAge();

Driver.showJob();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 西藏的见面礼 曾经去过黄龙,感觉自己不太会高反,认为高反是心里作用,也在药店买了红景天口服液提前两天喝了一下用来壮...
    心态其实就是一种风水阅读 285评论 0 0
  • 毕业好几年了,也忘记了自己曾经还会写文章。今天提笔旨在宣传我的家乡——美! 我的家乡坐落在湖南西北的小县城。虽然位...
    不羁的风ING阅读 147评论 0 0
  • 早晨,于楼下转角处,一地落红蓦然闯入眼帘,触目惊心,让人无端地突生一股浓得化也化不开的伤感。 原来,昨夜风急,一树...
    葛芳阅读 1,374评论 40 33
  • 面朝大海春暖花开,是海子的选择。 人不是生来被打败的,是海明威的选择。 人固有一死,或重于泰山,或轻于鸿毛,是司马...
    斯嘉丽big阅读 259评论 0 0
  • 我讨厌宿舍晚上各种拖拉门声、各种东西与的撞击声、走得很快的脚步声、坐上床的声音、玩游戏的声音、不带耳机的声...
    木瑾禾阅读 150评论 0 0