nodeJs模块_new类_继承(基于游戏开发)

代码模块

1:js里面代码可以放在不同的文件里,称为代码模块;

这里写图片描述

2:一个模块需要引用其它模块代码的时候使用 require;
3: require:
     (1) 如果是第一次调用,那么就加载,执行脚本;
     (2)  每个代码模块由module.exports 导出的对象;
     (3) 每次require的时候,都返回module.exports;
     (4)如果不是第一次执行,那么直接返回module.exports;

这里写图片描述

这里写图片描述


this

1:function.call(this, param1, param2);
2:表.函数名(参数):
    (1) 在函数里面 有一个this对象,指的是外面的表;
    (2) 如果外面没有表,那么thisundefine;
    (3) 函数.bind(数据对象),会产生一个新的函数对象,调用这个函数的this,就是外面bind的对象;
显示和隐式调用与强制传递this

这里写图片描述

bind

这里写图片描述

强制绑定(bind)的优先级高于显示绑定

这里写图片描述

做回调函数的时候都是通过强制bind,强制bind this,优先级比其它的都高;

显示绑定高于隐式绑定

这里写图片描述


this 有什么用呢?

javascript都是动态的借助于 Function+This 实现面向对象,没有象Java,c#,……..真真正正的实现面向对象,this就更象我们面向对象的思维,观察下面代码,更象-面向对象的(类,实例)、属性,方法。完全借助于This实现了面向对象;
这里写图片描述


原型引用

1:每个函数对象都有prototype属性;

这里写图片描述

2: clone一个函数对象的prototype;
     (1)定义一个空函数;
    (2)空函数的prototype = 函数对象的prototype;

这里写图片描述


     (3) 新构造函数.prototype = new 空函数();
     //step1 var data = {};
     //step2 data.__proto__:prototype 的浅复制
     //step3 实例 作为this,传递给后面的函数
     //step4 调用这个函数;

这里写图片描述


new 与构造函数

上面的(原型引用)  data 是一张表(字典);

1: js 构造函数: 普通的函数(参数),一般和类的名字是一样的;
2: new +构造(参数1, 参数2....);
    (1)先创建一个{}对象;
    (2)将这个新对象绑定到函数里面的this;
    (3)构造函数对象的prototype 复制给新对象的 __proto__
    (4) 返回新创建的对象;

这里写图片描述

3: 表.函数调用搜索顺序,现在key, value里查找,再到__proto__里找;

这里写图片描述

this之---浅拷贝(浅复制),new

这里写图片描述

定义一个类

这里写图片描述

以上的定义很基础很底层,而且还很蛋疼的逻辑,但是它是很多语言通用的逻辑……….但必须深入的了解,往下继承,我们再将这个—–类封装一下。
为接下来的游戏开发打下牢牢的基础


js实现继承

继承是什么意思呢?实际上就是写了上面人的(类)的代码,完了不想再写,我们已经写了人的(类),再想写出男人的(类)
那么我们就需要使用继承 

这里写图片描述

1: 子类clone 基类构造函数的prototype; 

这里写图片描述

2:  子类和基类如果有同名的方法,会现在当前这个类的函数;

这里写图片描述

如果想打印同名基类的方法呢???
3: 子类的实例显示的调用基类的函数
    基类.prototype.函数名字.call(实例, 参数1,参数2);

这里写图片描述

以上是最底层,最基础的类,写起来很蛋疼......我们可以将类进一步封装
4: 编写一个Class()方法来定义一个类,让它继承基类;

这里写图片描述


code

猜你喜欢

转载自blog.csdn.net/qq_36482772/article/details/80446106
今日推荐