博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript继承
阅读量:6120 次
发布时间:2019-06-21

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

1、原型链继承

function Parent() {    this.name = 'Mike'}function Child() {    this.age = 12;}Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条var test = new Child();console.log(test.age);console.log(test.name);//得到被继承的属性//继续原型链继承function Brother() {//brother构造    this.weight = 60;}Brother.prototype = new Child();//继续原型链继承var brother = new Brother();console.log(brother.name);console.log(brother.age);

2、借用构造函数(类式继承)

function Parent(age) {    this.name = ['Mike', 'Bill', 'Andy'];    this.age = age;}function Child(age) {    Parent.call(this, age);//把this指向Parent,同时还可以传递参数}var test = new Child(21);console.log(test.name);console.log(test.age);test.name.push('Bill');console.log(test.name);

3、组合继承

function Parent(age) {    this.name = ["Mike", "Jack", "Bill"];    this.age = age;}Parent.prototype.run = function () {    return this.name + " are both " + this.age;};function Child(age) {    Parent.call(this, age);//对象冒充,给超类型传参}Child.prototype = new Parent();//原型链继承var child = new Child(12);//写new Parent(12)也行console.log(child.run() + " years old.");

4、原型式继承

function obj(o) {    function F() {    }    F.prototype = o;    return new F();}var box = {    name: "Andy",    arr: ["brother", "sister", "father"]};var b1 = obj(box);console.log(b1.name);console.log(b1.arr);b1.name = "Mike";console.log(b1.name);b1.arr.push("mother");console.log(b1.arr);var b2 = obj(box);console.log(b2.name);console.log(b2.arr);

5、寄生组合式继承

function obj(o) {    function F() {    }    F.prototype = o;    return new F();}function create(parent, test) {    var f = obj(parent.prototype);//创建对象    v.constructor = test;//增强对象}function Parent(name) {    this.name = name;    this.arr = ["brother", "sister", "father"]}Parent.prototype.run = function () {    return this.name;};function Child(name, age) {    Parent.call(this, name);    this.age = age;}Child.prototype = new Parent();var test = new Child("Andy", 12);console.log(test.run());test.arr.push("Jack");console.log(test.arr);console.log(test.run());//Andy,只共享了方法var test2 = new Child("Bill", 21);console.log(test2.arr);//引用问题解决

转载地址:http://comka.baihongyu.com/

你可能感兴趣的文章
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>