博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现继承的5种方式
阅读量:6679 次
发布时间:2019-06-25

本文共 2126 字,大约阅读时间需要 7 分钟。

1.对象冒充:

function Parent(username){    this.username = username;    this.hello = function(){         alert(this.username);    }}
function Child(username,password){    this.method = Parent;    this.method(username);//最关键的一行    delete this.method;    this.password = password;    this.world = function(){         alert(this.password);    }}
var parent = new Parent("zhangsan");var child = new Child("lisi","123456");parent.hello();child.hello();child.world();

2.call()方法:

function Parent(username){    this.username = username;    this.hello = function(){         alert(this.username);    }}
function Child(username,password){     Parent.call(this,username);     this.password = password;     this.world = function(){          alert(this.password);     } }
var parent = new Parent("zhangsan");var child = new Child("lisi","123456");parent.hello();child.hello();child.world();

3.apply()方法:

function Parent(username){    this.username = username;    this.hello = function(){         alert(this.username);    }}
function Child(username,password){    Parent.apply(this,new Array(username));    this.password = password;    this.world = function(){         alert(this.password);    }}
var parent = new Parent("zhangsan");var child = new Child("lisi","123456");parent.hello();child.hello();child.world();

4.原型链:

function Person(){}Person.prototype.hello = "hello";Person.prototype.sayHello = function(){     alert(this.hello);}
function Child(){}Child.prototype = new Person();//这行的作用是:将Parent中将所有通过prototype追加的属性和方法都追加到Child,从而实现了继承Child.prototype.world = "world";Child.prototype.sayWorld = function(){     alert(this.world);}
var c = new Child();c.sayHello();c.sayWorld();

5.call()方法与原型链混合:

function Parent(hello){    this.hello = hello;}Parent.prototype.sayHello = function(){     alert(this.hello);}
function Child(hello,world){    Parent.call(this,hello);//将父类的属性继承过来    this.world = world;//新增一些属性}Child.prototype = new Parent();//将父类的方法继承过来Child.prototype.sayWorld = function(){
//新增一些方法 alert(this.world);}
var c = new Child("zhangsan","lisi");c.sayHello();c.sayWorld();

 

转载于:https://www.cnblogs.com/lxcmyf/p/6429637.html

你可能感兴趣的文章
powerviot install in sharepoint 2013
查看>>
javascript在我的工作的用法
查看>>
《告诉他们,我已乘白鹤去了》观后感——用生命换取信仰
查看>>
诡秘的“端口安全”功能
查看>>
为VMware ESXi主机添加本地存储的过程及注意事项-之4
查看>>
oracle 11g 客户端安装检查过程中报物理内存不足的解决
查看>>
nagios中自己写的监控mysql主从复制的插件
查看>>
SFB 项目经验-45-用培训课件当运维文档,聪明
查看>>
拿到了2013年10月微软MVP奖杯
查看>>
Windows Server 2012正式版RDS系列⑦
查看>>
字段校验器配置风格
查看>>
Office 2013新特性
查看>>
我的友情链接
查看>>
《OSSIM开发者手册》稿件即将完成。
查看>>
数据仓库入门(实验9)查询多维数据集
查看>>
oracle常用网址
查看>>
光棍节程序员闯关秀过关攻略
查看>>
大话“自动化测试框架思想与构建”
查看>>
SQL Server Profiler – 存储过程调试
查看>>
SQL Server 博文汇总
查看>>