当前位置: 首页 > news >正文

【挥舞JS】JS实现继承,封装一个extends方法

父类

function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype = {
    eat: function () {
        console.log(this.name + '正在吃饭...');
    },
    sang: function () {
        console.log(this.name + '正在唱歌...');
    }
};
var liuyu = new Person('刘雨', 26);

子类

function Student(name, age, score) {
    Person.call(this, name, age);
    this.score = score;
}

封装一个 extends 方法

//子类  extends  父类
Function.prototype.extends = function (func, options) {
    for (var key in func.prototype) {
        this.prototype[key] = func.prototype[key];
    }
    for (var name in options) {
        this.prototype[name] = options[name];
    }
};

子类可以继承父类的属性和方法,也可以扩展自己的属性和方法。extends 方法参数:1.父类 2.需要扩展的属性和对象的一个对象集合。

Student.extends(Person, {
    study: function () {
        console.log(this.name + '正在学习...');
    }
});

var can = new Student('can', 22, '良好');
can.eat();
can.work();

相关文章:

  • 使用 Fastlane 实现 iOS 跟 Android 自动打包脚本
  • Python练习-迭代-2018.11.28
  • 武汉区块链软件技术公司:艺术市场如何从区块链中受益?
  • JAVA入门到精通-第26讲-异常
  • Elasticsearch实践(四):IK分词
  • Alpha 冲刺 (10/10)
  • 汉诺塔解析(图解)
  • Go 基础(非常基础)
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 微服务架构介绍及开源框架
  • 【345】机器学习入门 - 李宏毅机器学习笔记
  • 动态删边SPFA: [HNOI2014]道路堵塞
  • Centos6.9安装JDK1.8
  • Android Studio中SVN的使用
  • MySQL索引原理以及类型
  • Android组件 - 收藏集 - 掘金
  • angular2 简述
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES6语法详解(一)
  • hadoop集群管理系统搭建规划说明
  • Java 网络编程(2):UDP 的使用
  • Mysql5.6主从复制
  • Sass Day-01
  • vue 配置sass、scss全局变量
  • windows下如何用phpstorm同步测试服务器
  • 基于axios的vue插件,让http请求更简单
  • 前端设计模式
  • 小试R空间处理新库sf
  • 用Canvas画一棵二叉树
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragma预处理命令
  • (3)选择元素——(17)练习(Exercises)
  • (rabbitmq的高级特性)消息可靠性
  • (TOJ2804)Even? Odd?
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (分布式缓存)Redis分片集群
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (黑马C++)L06 重载与继承
  • (三)终结任务
  • (新)网络工程师考点串讲与真题详解
  • (一)appium-desktop定位元素原理
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一一四)第九章编程练习
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)jQuery 基础
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ***利用Ms05002溢出找“肉鸡
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则