JavaScript 语言本身没有提供类,没有其他语言的类继承机制,它的继承时通过对象的原型实现的,但这不能满足我们对 Cocos2d-JS 引擎的要求,所有类都直接或间接继承实现的。

var Person = Class.extend({   //声明一个Person类,继承自 Class,Class.extend()表示继承自Class

init: function(isDancing){ //定义构造函数init初始化属性

this.dancing = isDancing;

},

dance: function () { //定义普通函数dance(),返回属性dancing

return this.dancing;

}

});

var Ninja = Person.extend({ //声明Ninja类继承自 Person 类

init: function () { //定义构造函数 init,在该函数中 this._super(false) 语句时调用父类构造函数初始化父类中的属性

this._super(false);

},

dance: function (){ // 重写 dance() 函数,它会覆盖父类的 dance() 函数

//Call the inherited version of dance()

return this._super( ); //调用父类的 dance() 函数

},

swingSword: function () { //这个函数是子类 Ninja 新添加的函数 swingSword()

return true;

}

});

var p = new Person(true); //通过 Person 类创建 p 对象,给构造函数的参数是 true

console.log(p.dance()); //打印 p 对象 dance 属性  -> true

var n = new Ninja(); //通过 Ninja 类创建 n 对象,构造函数位空,默认初始化采用 fales 初始化父类中的 dance 属性,打印为 false

console.log(n.dance()); //false

console.log(n.swingSword()); //true

这种简单的 JavaScript 继承方法事实上实现了一般意义上的面向对象概念的继承和多态机制,这种继承方法是 Cocos2d-Js 继承机制的核心。

cocos2d JS-(JavaScript) JavaScript 中的简单继承关系的更多相关文章

  1. angularjs 中的scope继承关系——(2)

    转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include ...

  2. Programming In Scala笔记-第十一章、Scala中的类继承关系

    本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...

  3. cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?

    为什么今天要做这样子的操作,原因很简单,因为cocos JS 的本地缓存储存不了对象,所以当我通过本地缓存的 key和value来取值的时候就取不出来来,json的消息数据是一个对象来的,然而在做牌局 ...

  4. vue.js的学习中的简单案例

    今天学习了近年来挺火的一门JS技术,叫vue.js下面是它的一个简单案例: <html> <head> <title>$Title$</title> / ...

  5. C++中的简单继承

    Father.cpp: #include<iostream> using namespace std; class Father { protected: int width; int h ...

  6. angularjs 中的scope继承关系——(1)

    转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html JavaScript 的原型链继承 假设父类 parentScop ...

  7. ES6中Class的继承关系

    es5实现中,每个对象都有__proto__属性(也就是关系图中[[prototype]]属性),指向对应的构造函数的prototype.Class 作为构造函数的语法糖,同时有prototype属性 ...

  8. Hibernate注解方式配置-继承关系

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...

  9. Hibernate之jpa实体映射的三种继承关系

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...

随机推荐

  1. .NET Core开发日志——Startup

    一个典型的ASP.NET Core应用程序会包含Program与Startup两个文件.Program类中有应用程序的入口方法Main,其中的处理逻辑通常是创建一个WebHostBuilder,再生成 ...

  2. [No0000102]JavaScript-基础课程2

    var bob = new Object(); bob.age = ; // 这一次我们已经添加了一个方法,setAge bob.setAge = function (newAge){ bob.age ...

  3. 最详细最全的redis配置文件解释

    转载自:http://www.cnblogs.com/zhang-ke/p/5981108.html #redis.conf# Redis configuration file example.# . ...

  4. jc公共

    1.前端和后端交互 var listparm = new DataParam("MyTableList", ddl.ToString()); var ridparm = new D ...

  5. oracle基本命令笔记

    最近由于工作原因,再次接触oracle,因此重新来熟知下oracle基本的命令. --改密码 1.运行——键入“cmd” 回车2.键入“sqlplus/nolog” 回车3.键入“conn/as sy ...

  6. 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker

    Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  7. for in 循环

    for  in循环可以循环遍历数组  关键也可以循环遍历对象!而一般的for循环只能循环遍历数组, 当循环遍历对象时key值代表键值对的键,obj[key]则是对应键的值: 当循环遍历数组时,数组不是 ...

  8. TensorFlow安装之后导入报错:libcudnn.so.6:cannot open sharedobject file: No such file or directory

    转载自:http://blog.csdn.net/silent56_th/article/details/77587792 系统环境:Ubuntu16.04 + GTX1060 目的:配置一下pyth ...

  9. tomcat 的acceptCount、acceptorThreadCount、maxConnections、maxThreads 如何确定

    acceptCount 连接在被ServerSocketChannel accept之前就暂存在这个队列中,acceptCount就是这个队列的最大长度. ServerSocketChannel ac ...

  10. vue.js安装问题

    1.安装:npm install --global vue-cli 2.创建项目:vue init webpack my-project npm WARN deprecated browserslis ...