cocos2d JS -> JavaScript 中的简单继承关系

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; min-height: 25.0px }
span.Apple-tab-span { white-space: pre }

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 继承机制的核心。

时间: 2024-08-27 19:09:48

cocos2d JS -> JavaScript 中的简单继承关系的相关文章

javascript中的对象继承关系

相信每个学习过其他语言的同学再去学习JavaScript时就会感觉到诸多的不适应, 这真是一个颠覆我们以前的编程思想的一门语言,先不要说它的各种数据类型以及表达 式的不同了,最让我们头疼,恐怕就是面向对象的部分了,在JavaScript中,是没有给定一 个创建对象的关键词的,它不像Java中一个class就可以创建一个对象,在JavaScript中, 对象是一个十分松散的的key-value对的组合,通常,我们在创建对象时,可以通过{}来直 接生成一个对象,就像我们之前所学的,对象中有属性,有行

javascript中的对象继承关系(2)

在上一章中,我们着重介绍了JavaScript中类之间的原型继承关系:原型继承对于继承类中的方法来说是很方便的.那么我们今天就来看一下继承中的类继承以及类继承和原型继承的混用,所谓类继承,就是使用call或者apply方法来进行冒充继承: 1 function Desk(size,height){ 2 this.size=size; 3 this.height=height; 4 } 5 function MJDesk(size,height){ 6 Desk.call(this,size,he

javascript中最佳的继承方案

首先是为什么要继承? 万物皆对象,在面向对象思想的开发中,研发一个汽车是需要一个一个部件组成的,每一个部件都是一个对象,每个对象都有自己的功能和职责,而继承就是要解决对象之间避免的重复造轮子,避免做重复的工作. 比如:我已经有了一个汽车的近光灯对象,我还需要构建一个远光灯对象,让这个灯的功能变得更加强大,我当然不想在重新学习.如何买材料.制作技术等等,我只需要将制作近光灯的技术搬以致用就行了,甚至我还可以增加新的功能,给它扩展一个远光的功能,这样一来我的成本是不是就很低了呢,这样一来我的核心置关

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

转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include 假设在我们的 controller 中, $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11}; HTML 为: <script type="text/ng-template" id="/tpl1.html&quo

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

转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html JavaScript 的原型链继承 假设父类 parentScope 有如下成员属性 aString, aNumber, anArray, anObject, 以及 aFunction.子类 childScope 原型继承父类 parentScope,于是我们有: 如果子 Scope 尝试去访问 parentScope 中定义的属性,JavaScript 会先在子

javascript 中的原型继承

javascript圆形变成的基本规则: 所有数据都是对象: 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它: 对象会记住它的原型: 如果对象无法响应某个请求,它会把这个请求委托给它自己的原型: 所有的数据都是对象 在javascript的类型中,分为两类:基本类型和复杂类型: 基本类型包括:undefined.number.boolean.string.null:基本类型可以通过包装类的方式变成对象类型数据来处理: 复杂类型:object; 1.1  包装对象:所谓"包装对

javascript中的原形继承(一)

"面向对象"有三种基本特性,即封装.继承和多态.一般来说,三个特性都完全满足的话,我们称之为"面向对象语言",而称满足部分特性的语言为"基于对象语言". "对象系统"的继承特性,有三种实现方案,包括基于类.基于原型和基于原类.而javascript中没有采用我们常用的类继承体系,而是使用原型继承来实现对象系统.因此javascript中没有类,而采用一种名为"构造器"的机制来实现类的某些功用. 关于这个话题

JavaScript中原型与继承(简单例子)

利用原型prototype创建自定义对象Person: function Person(name,sex){ this.name = name; this.sex = sex; } Person.prototype = { getName:function(){return this.name}, getSex:function(){return this.sex} } var liu = new Person("lcy","female"); //创建一个空白对象

Javascript中的原型继承详解

js中的继承,是面向对象的知识,因为js没有类的概念,所以继承是通过对象实现的,谈到继承,就必须说到prototype,就不得不先说下new的过程. 一个小小的列子: <script type="text/javascript"> var Person = function () { }; var p = new Person(); </script> 我们来看看这个new究竟做了什么?我们可以把new的过程拆分成以下三步: <1> var p={}