node.js面向对象实现(一)类和对象
博客专区 > mifans 的博客 > 博客详情
node.js面向对象实现(一)类和对象
mifans 发表于1年前
node.js面向对象实现(一)类和对象
  • 发表于 1年前
  • 阅读 100
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

使用Node.js好一段时间了,其实大部分还是停留在使用的阶段对于它(或者也可以说是JS)的很多特性也不是非常的了解,之后要开始做自己的东西了,所以严谨的态度还是要保持的,在这里记录下Node.js中面向对象的实现吧~~也希望可以帮助到很多在学习Node.js的朋友!

首先我们要理解几个概念
1 模块
模块是node.js应用程序的基本组成部分,在node.js的项目中文件和模块是一一对应的,换而言之一个node.js文件就可以理解为一个模块,这个文件可能是js代码,json或者是编译过的C/C++扩展。(摘自Node.js开发指南)。
     OK!有了模块的概念我们可以用他做什么呢?
      回想一下在传统的OO语言比如C++,或者OC,C#中,同样的我们一般会用一个文件代表一个类(当然可能很多朋友在C#中会在一个文件中定义若干个类- -),在需要使用某个已经定义过的类时我们经常会采用引用该类的方式在当前上下文中对其进行操作,如:

定义一个TestClass
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class TestClass
    {
        public int i = 0;
    }
}

引用并且使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            TestClass t = new TestClass();
        }
    }
}

那么我们在node.js中如何定义一个类呢?按照常规的步骤我们需要完成一下几件事情
1 创建一个文件来编写自定义类
2 在需要使用该类的地方引用自定义类
3 调用自定义类的方法

(1)我们新建一个baseClass.js文件
node.js面向对象实现(一)类和对象
   我们需要在JS文件中打如自定义类的代码,并且使用node.js的特性将我们定义的Base类封装成模块
node.js面向对象实现(一)类和对象
大家注意在baseClass.js中我定义了一个名为Base的方法,用他作为类的构造函数,同时我将模块的访问接口改为了Base方法,这也就意味着我们可以通过该模块的接口获取一个新的baseClass对象。

这里再对JS中的方法和变量做个简单的描述
JS中有3中类型的方法和变量
1 对象方法(变量),对象本身包含的方法和变量
2 类方法(变量),可以理解为类的静态方法和变量
3 原型方法(变量),也可以理解为是对象本身包含的方法

(2) 有了类我们就可以使用node.js提供的require方法在类外的地方导出并且使用我们的自定义类了,这里需要注意的是require之后填入的路劲为相对路径

node.js面向对象实现(一)类和对象

至此我们就完成了在node.js中自定义类并且初始化类的对象以及调用对象的方法!
最后要说一下其实在JS中并没有真正类的概念,传统的OO中对象是类的实例化结果,而JS是基于原型的语言,通过原型复制对象。
JS中的new方法本质其实是一个复制的过程主要做了三件事情

 

var obj  = {};

obj.__proto__ = Base.prototype;

Base.call(obj);


(1)初始化一个对象
(2)将对象的原型链指向Base的原型链
(3)将Base的上下文(this指针)赋给obj
通过以上三个过程就实现了将Base完全复制给了OBJ这个对象,最后返回

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 9
博文 202
码字总数 102200
×
mifans
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: