`
xieye
  • 浏览: 834845 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

node中的this学习体会(有代码示例)

阅读更多
做一个定时器功能,用node的对象和事件机制。
每隔500毫秒输出一个点,输出3次。

全部代码如下,使用事件机制。
var util=require('util');
var events=require('events');

function Pulsar(speed, times) {
    events.EventEmitter.call(this);
    this.speed=speed;
    this.times=times;
    // 设置监听器
    this.on('pulse',()=>{
        console.log('.');
    });
}
// 继承
util.inherits( Pulsar, events.EventEmitter );
// 写一个start方法
Pulsar.prototype.start=function() {
    var self = this;
    var id=setInterval( function() {
        self.emit('pulse');
        self.times--;
        if (self.times==0) {
            clearInterval(id);
        }
    }, this.speed);
};

// 执行。
var pulsar= new Pulsar(500,3);
pulsar.start();

该程序执行结果如下:
.
.
.

然后就结束了。

仔细观察,发现代码中的定时器部分的this引用有点丑陋,于是有两种解决方案,
1、使用bind绑定this,bind是所有函数的一个自带的内部方法。
被改动的代码如下:
// 写一个start方法
Pulsar.prototype.start=function() {
    var id=setInterval( function() {
        this.emit('pulse');
        this.times--;
        if (this.times==0) {
            clearInterval(id);
        }
    }.bind(this), this.speed);
};


把匿名函数用括号括起(不用括号也可以),然后加bind方法绑定自身,感觉应该还不错,可以执行,但是还有更好的方案。

2、使用箭头函数。
// 写一个start方法
Pulsar.prototype.start=function() {
    var id=setInterval( ()=> {
        this.emit('pulse');
        this.times--;
        if (this.times==0) {
            clearInterval(id);
        }
    }, this.speed);
};


node果然趣味无穷,花样比较多。




1
0
分享到:
评论

相关推荐

    node即学即用 示例代码

    通过学习和实践这些示例代码,你将能够更好地理解Node.js、Express和EJS在实际项目中的应用,提升你的全栈开发能力。在探索过程中,遇到任何问题,都可以参考官方文档或社区资源来获得解答。不断实践和理解这些核心...

    node的学习和代码

    node的学习和代码

    node练习代码,对应个人开始学习使用参考,有基础就不要下

    这个压缩包“node练习代码”显然包含了作者在学习Node.js过程中编写的实践代码,对于初学者来说,是一个很好的参考资料。 1. **Node.js基础**: Node.js的核心特性在于它的非阻塞I/O模型,这使得它在处理大量并发...

    node.js学习入门示例

    在本文中,我们将深入探讨Node.js的学习入门,以"node.js学习入门示例"为指导,结合提供的"microblog"项目实例,探索Node.js的基本概念、核心特性以及如何使用它来构建一个微型博客系统。首先,我们要理解Node.js是...

    代码示例.rar

    在IT行业中,代码示例是学习和理解编程概念、技术框架和特定问题解决方案的重要资源。"代码示例.rar"这个压缩包很可能包含了多种编程语言、框架或库的实例代码,帮助用户快速上手或者解决实际问题。由于标签为空,...

    超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码

    超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码 超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码 超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具...

    2013年Node.js入门经典源代码

    在"Node.js入门经典源代码"中,你可能会看到以下示例: - 基本的HTTP服务器创建,展示如何使用Node.js搭建一个简单的网页服务器。 - 异步I/O操作,如读取文件、写入文件等,展示了非阻塞I/O的实现。 - 事件和回调...

    写给php开发者的NODE.js学习指南

    本书假设你是一名有经验的PHP开发人员,并且已经开始学习如何编写Node.js。本书介绍了PHP和Node.js这两种语言惊人的相似之处,并详细讲解了如何将整个PHP Web应用转换为Node.js。通过对比一些PHP和Node.js的特性,你...

    Node.js权威指南源代码

    《Node.js权威指南》是一本深入探讨Node.js技术的书籍,源代码的提供是为了辅助读者更好地理解和实践书中...在学习过程中,结合书中的理论解释和实践代码,将有助于全面掌握Node.js这一强大的服务器端JavaScript平台。

    新时期的node.js入门-李锴-书中示例代码

    总的来说,《新时期的Node.js入门》是一本全面介绍Node.js基础与实践的书籍,通过李锴精心编写的实例代码,读者不仅能学习到Node.js的基本语法,还能掌握实际开发中的各种技巧,为步入Node.js的世界打下坚实基础。

    Node.js学习笔记.md

    - 示例代码中的http模块通过require方法被引入,这是Node.js中模块引入的典型方式。 - require方法可以引入Node.js核心模块,也可以引入本地文件或第三方模块。 6. Node.js的端口监听 - 在Node.js中,通过listen...

    Node.js入门经典源代码

    这个"Node.js入门经典源代码"压缩包文件显然包含了用于学习和理解Node.js基础知识和实践的源代码示例。以下是一些关于Node.js的重要知识点,结合这个资源包,你可能会学到: 1. **异步非阻塞I/O**: Node.js的核心...

    Node.js入门经典 源代码

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在...总之,这个源代码集合是学习和提升Node.js技能的宝贵资源,通过实践和探索,你将能更好地掌握Node.js的核心概念和技术,并能应用于实际项目中。

    Node.js入门源代码及开发工具

    本资源包包含了Node.js的入门源代码和开发工具,对于初学者来说是极好的学习材料。 首先,我们要理解Node.js的核心特性。Node.js采用事件驱动、非阻塞I/O模型,这使得它在处理高并发请求时表现出色,特别适合于实时...

    node.js.gif简单示例

    node.js简单示例

    Web应用项目开发实战:基于Node.js和React的基础代码示例框架构建

    内容概要:本文档介绍了一个简单的 Web 应用程序开发框架,涵盖了 Node.js 和 React 技术栈的基础架构设计及其主要代码示例。提供了项目的基本结构说明、前后端核心文件和模块的功能解析、示例代码的运行流程以及...

    node系列学习代码与express工程参考代码.zip

    在本资源"node系列学习代码与express工程参考代码.zip"中,主要涵盖了Node.js和Express框架的学习内容。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者能够在服务器端使用JavaScript进行开发,...

    Node中文完美入门教程

    Node.js是一种基于Chrome V8引擎的服务器端JavaScript运行环境,它使得JavaScript能够脱离浏览器运行在服务器端,用于开发高性能...教程中的代码示例和项目实战将有助于读者加深理解,并将所学知识转化为实际开发能力。

    nodecpp-demo, node.js C 集成示例代码.zip

    nodecpp-demo, node.js C 集成示例代码 nodecpp演示这个库包含完整的代码清单,可以帮助你开发 node.js 插件。我的博客- blog.scottfrees.com 和 node.js C 和集成的内容都在我的博客上得到了充分的解释。基本一些...

Global site tag (gtag.js) - Google Analytics