JS-基础-05.require、new、this、继承

一、代码模块

  1:js里面代码可以放在不同的文件里,称为代码模块;
  2:一个模块需要引用其它模块代码的时候使用 require;
  3: require:
    (1) 如果是第一次调用,那么就加载,执行脚本;
    (2) 每个代码模块由module.exports 导出的对象;
    (3) 每次require的时候,都返回module.exports;
    (4)如果不是第一次执行,那么直接返回module.exports;
// 我们所有的代码不能都写到一个文件里面;
// 分开文件,js--> 模块机制;
// js 加载代码的 require()
// step1: 加载指定的js代码,并执行;
require("./utils")
// 如果js代码已经被加载进来了,是不会执行的;
require("./utils")

// require 返回值, 返回加载进来的代码的module.exports 所指向的对象;
// 多次require同一个模块,都回返回这个module.exports;
var utils = require("./utils");
// console.log(ret); // 返回的是一个 {}, 因为你还没有指定module.exports导出的对象;
// console.log(ret(3, 4));
console.log(utils.add(3, 4));

/* 总结一下
require: 去加载指定的js代码;
require 会返回这个代码里面的module.exports,如果用户没有指定,module.export = {};
require 如果这个js代码已经被加载了,是不会再次装载执行的,但是仍然可以返回module.export所值的对象;
*/

// 一般我们会用和代码名字同名的变量,来接住require的返回值;
var test = require("./test");
console.log(test);
二、this机制 
  1:function.call(this, param1, param2);
  2:表.函数名(参数):
    (1) 在函数里面 有一个this对象,指的是外面的表;
    (2) 如果外面没有表,那么this为undefine;
    (3) 函数.bind(数据对象),会产生一个新的函数对象,调用这个函数的this,就是外面bind的对象;
 

三、new与构造函数
  1: js 构造函数: 普通的函数(参数),一般和类的名字是一样的;
  2: new +构造(参数1, 参数2....);
    (1)先创建一个{}对象;
    (2)将这个新对象绑定到函数里面的this;
    (3)构造函数对象的prototype 复制给新对象的 __proto__
    (4) 返回新创建的对象;
;
 
四、原型引用
  1:每个函数对象都有prototype属性;
  3: clone一个函数对象的prototype;
    (1)定义一个空函数;
    (2)空函数的prototype = 函数对象的prototype;
    (3) 新构造函数.prototype = new 空函数();
 
五、JS实现继承
  1: 子类clone 基类构造函数的prototype;
  2: 子类和基类如果有同名的方法,会现在当前这个类的函数;
  3: 子类的实例显示的调用基类的函数
  基类.prototype.函数名字.call(实例, 参数1,参数2);
  4: 编写一个Class()方法来定义一个类,让它继承基类;

猜你喜欢

转载自www.cnblogs.com/orxx/p/10393329.html