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类继承, 用什么方法好的更多相关文章

  1. [python] 在 python2和3中关于类继承的 super方法简要说明

    下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分: python2的类继承使用super方法: #-*- coding:utf-8 -*- ' ...

  2. Javascript类继承-机制-代码Demo【原创】

    最近看到<Javascript设计模式>,对js模拟的”继承方式“有了更深一步的了解,虽然之前也总是用到prototype.new ,但只是知其然不知所以然,现在将类继承的方法整理如下,暂 ...

  3. Javascript 类继承

    Js继承 JavaScript并不是真正面向对象的语言,是基于对象的,没有类的概念. 要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 /** 声明一个基础父类 ...

  4. JavaScript中继承的实现方法--详解

    最近看<JavaScript王者归来>中关于实现继承的方法,做了一些小总结: JavaScript中要实现继承,其实就是实现三层含义:1.子类的实例可以共享父类的方法:2.子类可以覆盖父类 ...

  5. ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries...

    2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法,  后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法:  1.         定义变 ...

  6. javascript类继承的一些实验

    其实一开始编js没怎么用过对象,一般都用func,func,func···但是用多了,感觉代码一点都不美观,还要这里包一个函数,那里包一个函数,或者一直都是函数调用,不好看,而且一些重用的都要重写的话 ...

  7. JavaScript类继承

    和其他功能一样,ECMAScript 实现继承的方式不止一种.这是因为 JavaScript 中的继承机制并不是明确规定的,而是通过模仿实现的.这意味着所有的继承细节并非完全由解释程序处理.作为开发者 ...

  8. javascript类继承系列五(其他方式继承)

    除了前面学习的三种继承外,还有另外三种:原型继承寄生继承,寄生组合继承都是以: function object(o) { function F() { } F.prototype = o; retur ...

  9. javascript类继承系列二(原型链)

    原型链是采用最主要的继承方式,原理:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向一个原型对象,原型对象有一个构造器(constructor),它又指回到fun ...

随机推荐

  1. Task.Delay() 和 Thread.Sleep() 区别

    1.Thread.Sleep 是同步延迟,Task.Delay异步延迟. 2.Thread.Sleep 会阻塞线程,Task.Delay不会. 3.Thread.Sleep不能取消,Task.Dela ...

  2. Could not get lock /var/lib/dpkg/lock的解决方法

    E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to ...

  3. MySQL 安全整理

    MySQL 安全整理 关闭外网的端口访问. 使用高位的端口号. 如果需要外网访问不给最高的权限. 如果需要外网访问也是绑定客户端. To be continued

  4. 判断两个IP是否处于同一子网(网段)

    如何去判断A和B两个IP是否在同一网段,假如有如下两个IP地址和子网掩码,判断他们是否是同一个网段的IP地址的方法: A IP:202.194.128.9 B IP:202.194.128.14 子网 ...

  5. Mongo 用户创建及权限管理

    Mongo版本3.0之前使用的是db.addUser(),但3.0之后使用的是db.createUser() 内建的角色: 数据库用户角色:read.readWrite; 数据库管理角色:dbAdmi ...

  6. py-day1-5 python 分割 、 字母大小转换

    # partition() 分割为3段 从左往右遇见的第一个开始 test = 'bassaiwoll' v = test.partition('s') print(v) ('ba', 's', 's ...

  7. Zuul 限流

    /** * 限流 */ @Component public class RateLimiterFilter extends ZuulFilter { //1秒钟100个令牌 private stati ...

  8. elasticsearch 基本操作

    安装delete_by_query ,cd进/bin,执行./plugin install delete-by-query DELETE     http://192.168.1.12:9200/dd ...

  9. 【java】浅谈swtich

    在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),java1.7后支持了对string的判断 switch 的括号一定是表达式 ...

  10. CAD求交点函数

    public void IntersectWith( Entity entityPointer, Intersect intersectType, Point3dCollection points, ...