JavaScript类继承, 用什么方法好

时间:2022-09-02 18:27:03

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&period;target、 Object&period;entries&period;&period;&period;

    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. 程序员眼中的 SQL Server-执行计划教会我如何创建索引?

    先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...

  2. zigbee学习之路&lpar;五&rpar;&colon;定时器1&lpar;查询方式&rpar;

    一.前言 今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作. 二.原理与分析 谈到定时器的控制,我们最先想到的是要给它赋初 ...

  3. javascript 中的console&period;log和弹出窗口alert

    主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是co ...

  4. 云计算PAAS平台测试设计之镜像管理

    下面是云计算PAAS平台页面概览: 今天我们要讲的是镜像管理页面的测试设计: 可以看到,这个页面主要有增删改查四个功能. 1. 查询镜像 (1)易用性:查看镜像查询界面,界面上各组件设计合理.美观.易 ...

  5. Kafka学习笔记

    一.Kafka使用背景 1. Kafka的定义 是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipel ...

  6. redis神器

    redis是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存. redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上. ...

  7. 构建ASP&period;NET MVC4&plus;EF5&plus;EasyUI&plus;Unity2&period;x注入的后台管理系统(30)-本地化&lpar;多语言&rpar;

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言) 我们的系统有时要扩展到其他国家,或者地区,需要更多的语言环境,微软提供了一些解决 ...

  8. Could not execute JDBC batch update&semi; SQL &lbrack;delete from role where roleId&equals;&quest;&rsqb;&semi; constraint &lbrack;null&rsqb;&semi; neste

    今天在写多个删除功能的时候出现了这么一个错误:意思是删除操作的时候,没有找到对应的外键. Cannot delete or update a parent row: a foreign key con ...

  9. 项目管理-工作量评估 Manday

    People's suggestion, 逻辑有待验证 1. Project sponsor - a new request 2. Study the related issue, to define ...

  10. &lbrack;LeetCode&rsqb; 329&period; Longest Increasing Path in a Matrix&lowbar;Hard tag&colon; Dynamic Programming&comma; DFS&comma; Memoization

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...