js 继承的方式
//定义object的继承方法
Object.extend = function(destination, source) {
for(property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
//声明动物类
function Animail(name, age) {
this.name = name;
this.age = age;
this.say = function() {
console.log("我是:" + this.name + "--年龄:" + this.age);
}
}
const dog = new Animail("小狗", 12);
dog.say(); function Car(name, age) {
//使用call实现继承Animail类
// Animail.call(this, name, age);
//使用apply实现继承Animail类
/*Animail.apply(this, arguments);
this.run = function() {
console.log("车跑...")
}*/
this.name = name;
this.age = age;
}
//使用object实现继承animail类
Car.prototype = (new Animail).extend({
//重写say方法
say: function() {
console.log("我是车-名称:" + this.name + "age:" + this.age);
},
//添加 跑方法
run: function() {
console.log("车running...");
}
});
const caChe = new Car("卡车", 2);
caChe.say();
caChe.run(); const qiChe = new Car("汽车", 15);
qiChe.say();
qiChe.run();
es6 继承的实现
//定义animail类
class Animail {
//构造函数
constructor() {}; //属性的封装
setName(name) {
this.name = name;
};
getName() {
return this.name;
};
setAge(age) {
if(age > 100 || age < 1) {
this.age = 1;
} else {
this.age = age;
}
};
getAge() {
return this.age;
}
//定义say的方法
say() {
console.log("我是:" + this.name + "--age:" + this.age);
};
//静态方法
static sayHello() {
console.log("我是静态方法!");
}
}
//实例化dog
const dog = new Animail();
//设置name属性
dog.setName("小狗");
//设置年龄属性
dog.setAge(1000);
//d调用say方法
dog.say();
//获取属性的值
console.log(dog.getName());
//调用静态方法(静态方法不能被实例化对象调用)
Animail.sayHello(); //继承
class People extends Animail {
sayHello() {
console.log("大家好,我是:" + this.name + ",今年:" + this.age + "岁了!,我现在上" + this.grade + ",在" + this.className);
};
//年级名称
setClassName(className) {
this.className = className;
};
getClassName() {
return this.className;
};
setGrade(gradeName) {
this.grade = gradeName;
};
getGrade() {
return this.grade;
}
}
const xm = new People();
xm.setName("小明");
xm.setAge(10);
xm.setClassName("二班");
xm.setGrade("三年级");
xm.say();
xm.sayHello();
js 继承的方式的更多相关文章
- js继承的方式及其优缺点
js继承方法 前因:ECMAScript不支持接口继承,只支持实现继承 一.原型链 概念:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针,让 ...
- js继承的方式
深入理解继承的实现方式不仅仅有利于自己去造轮子,封装插件,更有利于我们去阅读一些框架的源码, 以下记录几种常见的继承方式 1. 原型链实现继承 function Father(){ this.name ...
- JS继承 实现方式
JS中继承方式的实现有多种方法,下面是比较推荐的方法,其它继承方式可做了解: function object(o) { function F() {} F.prototype = o; return ...
- js面向对象编程(第2版)——js继承多种方式
附带书籍地址: js面向对象编程(第2版)
- JS继承的原理、方式和应用
概要: 一.继承的原理 二.继承的几种方式 三.继承的应用场景 什么是继承? 继承:子类可以使用父类的所有功能,并且对这些功能进行扩展.继承的过程,就是从一般到特殊的过程.要了解JS继承必须首先要了解 ...
- JS类继承常用方式发展史
JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...
- JS继承以及继承的几种实现方式总结
传统面向对象语言:继承是类与类之间的关系. 而在js中由于es6之前没有类的概念,所以继承是对象与对象之间的关系. 在js中,继承就是指使一个对象有权去访问另一个对象的能力. 比如:比如对象a能够访问 ...
- js 继承的几种方式
JS继承的实现方式: 既然要实现继承,那么首先我们得有一个父类,代码如下: function Animal(name) { // 属性 this.name = name || '小白'; // 实例方 ...
- js对象的几种创建方式和js实现继承的方式[转]
一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...
随机推荐
- qt 软件打包
今天呈现的客户端完成了要打包发布,想了一下还不会,就问了一下度娘,在此记录一下学习的程度 1>将QT编译工具的BUG模式切换成Release模式,在Release模式下生成一个*.exe的可执行 ...
- wmware虚拟机的克隆
VMware 支持两种类型的克隆:完整克隆 链接克隆 完整克隆是和原始虚拟机完全独立的一个拷贝,它不和原始虚拟机共享任何资源.可以脱离原始虚拟机独立使用. 链接克隆需要和原始虚拟机共享同一虚拟磁盘文件 ...
- VS出现异常?!和十进制转二进制比是小事
今天被VS的纠错机制下了一小跳. 使用VS时,如果代码出现异常,比如我,运行代码时,出现了无限循环,在调试的时候VS会自动停止运行,并在错误代码行断点提示. 之后会出现一个杂项文件,提示你这里错了.注 ...
- Wed Jul 04 18:01:38 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended
Wed Jul 04 18:01:38 CST 2018 WARN: Establishing SSL connection without server's identity verificatio ...
- cnblogs博客申请完毕,以后再这里安家落户
cnblogs博客申请完毕,以后再这里安家落户,之前的博客就不转载了,好好搞技术,安稳过日子.
- python学习笔记_week15
note 上节作业问题: 1.css重用 <style> 如果整个页面的宽度 > 900px时: { .c{ 共有 } .c1{ 独有 } } .c2{ 独有 } </styl ...
- <转载>css3 概述
参照 https://www.ibm.com/developerworks/cn/web/1202_zhouxiang_css3/ http://www.cnblogs.com/ghost-xyx/p ...
- [Writeup]二维码的一个题
[Writeup]二维码的一个题 瓜皮感觉难出题眼,恶魔暴力膜法初现 看题 一个二维码,扫出来是where is the flag?(where is my mind?) 先感觉 用binwalk扫一 ...
- date命令的用法
date +%F data +%w, date +%W cal date -d "-1 years" +%F date -d "-1 hour" +%T 时间与 ...
- 尚硅谷redis学习8-事务
是什么? 能干嘛? 常用命令 案例说明 1.正常执行 2.放弃事务 3.全部放弃(全体连坐) 4.只抛弃错误(冤头债主) 5.watch监控 悲观锁 悲观锁(Pessimistic Lock), 顾名 ...