JavaScript类继承, 用什么方法好
JavaScript类继承, 用什么方法好
一个实例:
基类Car:
function Car(color, year) {
this.name = "car";
this.color = color;
this.year = year;
}
var p = Car.prototype;
p.getName = function() {
console.log(this.color + " " + this.name + ' ' + this.year);
};
子类Audi:
function Audi(color, year) {
Car.call(this, color, year);
this.name = 'Audi';
}
Audi.prototype = Object.create(Car.prototype);
Audi.prototype.constructor = Audi;
var p = Audi.prototype;
p.getName2 = function() {
console.log("Audi");
};
基类的定义
THREE.BufferGeometry = function () {
Object.defineProperty( this, 'id', { value: THREE.GeometryIdCount ++ } );
this.uuid = THREE.Math.generateUUID();
this.name = '';
this.type = 'BufferGeometry';
};
THREE.BufferGeometry.prototype = {
constructor: THREE.BufferGeometry,
getIndex: function () {
return this.index;
},
}
好处, 构造函数可以任意带参数
1) 继承父类的函数, 有几种方法
Audi.prototype = Object.create(Car.prototype);
Audi.prototype = new Car(); // 缺陷: 开销大,适合于构造函数无参数的情形,
2) 调用父类的初始化函数, 在子类构造函数中,
Car.call(this, color, year);
3) 把构造函数也放到prototype中
Audi.prototype.constructor = Audi
(对于copy,clone之类的函数, 需要返回子类的类别, 需要设置constructor, 否则返回的类别总是基类)
JavaScript类继承, 用什么方法好的更多相关文章
- [python] 在 python2和3中关于类继承的 super方法简要说明
下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分: python2的类继承使用super方法: #-*- coding:utf-8 -*- ' ...
- Javascript类继承-机制-代码Demo【原创】
最近看到<Javascript设计模式>,对js模拟的”继承方式“有了更深一步的了解,虽然之前也总是用到prototype.new ,但只是知其然不知所以然,现在将类继承的方法整理如下,暂 ...
- Javascript 类继承
Js继承 JavaScript并不是真正面向对象的语言,是基于对象的,没有类的概念. 要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 /** 声明一个基础父类 ...
- JavaScript中继承的实现方法--详解
最近看<JavaScript王者归来>中关于实现继承的方法,做了一些小总结: JavaScript中要实现继承,其实就是实现三层含义:1.子类的实例可以共享父类的方法:2.子类可以覆盖父类 ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries...
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- javascript类继承的一些实验
其实一开始编js没怎么用过对象,一般都用func,func,func···但是用多了,感觉代码一点都不美观,还要这里包一个函数,那里包一个函数,或者一直都是函数调用,不好看,而且一些重用的都要重写的话 ...
- JavaScript类继承
和其他功能一样,ECMAScript 实现继承的方式不止一种.这是因为 JavaScript 中的继承机制并不是明确规定的,而是通过模仿实现的.这意味着所有的继承细节并非完全由解释程序处理.作为开发者 ...
- javascript类继承系列五(其他方式继承)
除了前面学习的三种继承外,还有另外三种:原型继承寄生继承,寄生组合继承都是以: function object(o) { function F() { } F.prototype = o; retur ...
- javascript类继承系列二(原型链)
原型链是采用最主要的继承方式,原理:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向一个原型对象,原型对象有一个构造器(constructor),它又指回到fun ...
随机推荐
- 标 题: JavaScript真的要一统江湖了
http://www.newsmth.net/nForum/#!article/Python/125347?p=4 标 题: JavaScript真的要一统江湖了 发信站: 水木社区 (Fri Se ...
- python实现tail -f 功能
这篇文章最初是因为reboot的群里,有人去面试,笔试题有这个题,不知道怎么做,什么思路,就发群里大家讨论 我想了一下,简单说一下我的想法吧,当然,也有很好用的pyinotify模块专门监听文件变化, ...
- PCA原理解释
上图讲述的两组数据,可以看到左图的数据离散度比较大,相关性比较弱,右图数据的相关性比较强:我们在使用PCA的时候,就是要将相关性强的数据进行降维,以减少处理的数据量. 那么怎么描述数据的相关性呢? ...
- EXT4 超级块介绍(转)
https://blog.csdn.net/sunlei0625/article/details/79011946 The superblock records various information ...
- Golang 端口复用测试
先给出结论: 同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口. 测试 首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接 ...
- Linux 命令自动补齐快捷键
Linux 命令自动补齐快捷键 : TAB
- Hystrix 详细说明
在 Hystrix 入门中,使用 Hystrix 时创建命令并给予执行,实际上 Hystrix 有一套较为复杂的执行逻辑,简单来说明以下运作流程: 在命令开始执行时,会做一些准备工作,例如为命令创建响 ...
- VC禁止或允许拖拽改变窗口尺寸
创建窗口时用WS_THICKFRAME控制 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWndEx:: ...
- 黄聪:移动应用抓包调试利器Charles
一.Charles是什么? Charles是在 Mac或Windows下常用的http协议网络包截取工具,是一款屌的不行的抓包工具,在平常的测试与调式过程中,掌握此工具就基本可以不用其他抓包工具了 ...
- elasticsearch 口水篇(7) Eclipse中部署ES源码、运行
ES源码可以直接从svn下载 https://github.com/elasticsearch/elasticsearch 下载后,用Maven导入(import——>Existing Mave ...