JavaScript
bdss58
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaScript中的自定义对象(custom Object)和继承(inheritance)
快速浏览一下JavaScript,发现它还是和c++这类传统一点的语言有很大不同。本文着重描述一下custom Object和inheritance(我是JavaScript新手,没有用过JavaScript)我不喜欢开门见山,所以我想一点点地举例,引入说明这两个问题。1、JavaScript中的类型系统JavaScript中有五种类型的变量:boolean, number, stri原创 2015-04-12 22:03:09 · 1222 阅读 · 0 评论 -
JavaScript闭包造成内存泄漏的一个例子
看下面代码:function readData() { var buf = new Buffer(1024 * 1024 * 100) var index = 0 buf.fill('g') return function() { index++ if (index < buf.length) { return buf[index-1]原创 2016-05-22 16:57:56 · 4178 阅读 · 0 评论 -
javascript异步编程
javascript的异步、同步、回调和时间循环等概念就不解释了,google一下,一大堆精品文章。这里简单记录一下javascript的异步编程常用套路。 就以nodejs的fs模块读取文件为例吧。fs同步读取文件var fs = require("fs");var fileContent = fs.readFileSync('test.js','utf8');console.log(f原创 2016-06-26 16:57:11 · 420 阅读 · 0 评论 -
nodejs异步实践
没做过项目,也没有编码经验。只能翻译这篇文章捞捞经验了。 用node开发后台程序,经常跟数据库打交道,异步编程少不了。app.get('/user/:userId', function(req, res, next) { var locals = {}; var userId = req.params.userId; var callbackCounter = 0;翻译 2016-06-27 10:11:26 · 496 阅读 · 0 评论 -
javascript简单实现 EventEmitter
本文参考http://www.datchley.name/es6-eventemitter/ 先说说观察者模式吧。因为EventEmitter基于观察者模式。观察者模式EventEmitter实现一个EventEmitter类,作为被观察的对象:class EventEmitter { constructor() { this.listeners = new Map(); }原创 2016-05-21 23:47:32 · 5812 阅读 · 0 评论 -
es6改进es5中的一些坑
1. 块级作用域es5中有一个比较坑的地方就是变量提升(variable hoisting),variable hoisting的根本原因就是es5中没有块级作用域。看一下下面的代码:var a = 10;var b = 20;function add(flag) { if (flag) { var b = 10; return a + b; }原创 2016-05-21 17:51:42 · 1977 阅读 · 0 评论 -
ES6箭头函数(arrow function)
ES6的箭头函数对this关键字的绑定的改进老生常谈了。不再赘述,这里仅仅尝试一下改进的甜头。 下面片段对比了实用arrow function和不使用的区别:class Person { constructor(firstname, lastname) { this.firstname = firstname; this.lastname = lastnam原创 2016-06-23 17:37:15 · 630 阅读 · 0 评论 -
移除数组中的重复元素(javascript 数组去重)
方法一let arr = [1, 2, 3, 2, 1, 5, 5, 6, 5, 7]let unique_arr = arr.filter((elem, index, self) => { return index == self.indexOf(elem)})console.log(unique_arr) // [ 1, 2, 3, 5, 6, 7 ]很直观的做法,“每个元素只能在第一原创 2017-02-11 17:53:39 · 2450 阅读 · 0 评论 -
javascript立即执行函数的两种写法
两种写法看下面:// 第一种括号写法(function (m) { console.log(m)})('haha')// 用es5新写法可以:(m => console.log(m))('haha')// 第二种叹号写法!function (m) {console.log(m)}('haha')既然说到立即执行函数了,那么在唠叨一下闭包。通常用立即执行函数是用在闭包场景下的。for (va原创 2017-04-11 13:55:12 · 2279 阅读 · 0 评论 -
基于es6的promisify
es6原生支持了promise规范,可以使用new Promise()方法得到一个promise对象。promise的简单使用(() => new Promise((resolve, reject) => setTimeout(() => resolve('jianyong'), 2000)))().then(data => console.log(data))上面一行恶心的代码等价于:funct原创 2017-03-28 00:31:41 · 8214 阅读 · 0 评论 -
javascript千位分隔
用逗号分隔大数字,每三位数用逗号分隔。最简单的方法使用浏览器原生方法:let num = 123456num.toLocaleString() // '123,456'在nodejs环境中,不能直接使用toLocaleString方法,需要引入intl模块。require('intl').NumberFormat().format(123456) // '123,456'使用正则表达式替换正则表原创 2017-03-16 00:30:11 · 390 阅读 · 0 评论 -
v8 引擎与javascript代码优化
本文引用这里How the V8 engine works?以及这里How JavaScript worksv8 是Google德国团队用c++开发的一个javascript 引擎。但凡需要解释并执行javascript代码的地方,都可以使用v8引擎。比如客户端chrome浏览器和服务端nodejs都使用v8引擎来解析执行javascript代码。最初设计v8是用来提高在web浏览器内执行java翻译 2017-10-06 23:54:27 · 840 阅读 · 0 评论 -
javascript之debounce函数
为一个事件绑定函数后,存在这样一个问题:当事件连续出现时,绑定函数会联系触发。但我们并不想让函数连续出发执行,只想最后一个事件出现后触发一次绑定函数。 据一个场景例子,keydown事件,当用户一直按着按键不放,绑定的函数就会不断地触发执行。用户体验差。这个时候debounce函数便派上用场。 先看一下debounce函数的原型: debounce(function, wait, immed原创 2016-05-19 18:08:09 · 1891 阅读 · 0 评论 -
javascript数组转换(convert to an Array)
javascript中有一些对象看起来用起来像是数组,但是他们并不是数组。比如arguments和NodeList对象。为了方便操作,需要将这类数据类型转换为数组类型。下面以NodeList为例,介绍几种数组转换方法:slice.callvar div_list = document.querySelectorAll('div'); // returns NodeListvar div_array原创 2016-05-18 19:21:21 · 1307 阅读 · 0 评论 -
javascript中Object.create与new的不同
newnew配合构造函数使用,创建一个新对象。//定义classvar Person = function (firstName) { this.firstName = firstName;};//定义methodPerson.prototype.sayHello = function() { console.log("Hello, I'm " + this.first...原创 2016-04-30 22:04:13 · 3483 阅读 · 10 评论 -
使用jQuery Deferred对象实现Promise
Making Promises With jQuery Deferred本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B原创 2015-12-20 00:43:46 · 1098 阅读 · 0 评论 -
jsonp 工作原理
jsonp 工作原理在跨域请求的解决方案中,jsonp是一种常用的简洁方案。 <script> 标签可以加载不同域资源。我们常用的jquery库就是通过script标签加载到当前域页面中的。<script type="text/javascript" src="http://xxcnd.com/jquery.min.js">利用script标签加载不同域的资源:script = document.原创 2016-04-07 17:51:04 · 676 阅读 · 0 评论 -
javascript copy拷贝对象
javascript中,函数参数的传递使用的是引用。变量的赋值也是引用。对象的深拷贝经常用到。自个实现了一个copy函数:function copy(object) { if (object instanceof Array) { return object.slice().map((v) => { return copy(v); })原创 2016-04-12 21:32:48 · 1057 阅读 · 0 评论 -
懒得加载jquery
本人太懒,需要用到jquery时候,来一句加载jquery CDN的标签都懒得加。没错就是这句:<script src="http://cdn.bootcss.com/jquery/2.2.1/jquery.js"></script>这时还是老老实实用原生javascript些吧,这么说来又不是很懒。 如果需要使用原生javascript代码替代jquery,可以参考这里如果是做项目用在生产环原创 2016-04-09 21:49:46 · 365 阅读 · 0 评论 -
leftPad字符补全
输入一个字符串,得到一个固定长度的字符串。如果输入字符串长度没有到达固定长度,则在输入字符串前面不上指定的字符。例如固定长度5,指定补全字符为‘#’: aa -> ###aa bbb -> ##bbb ccccc -> cccccjavascript的一个小巧实现:/** * @param {string} str为输入字符串 * @Param {char} 指定补全字符 *原创 2016-04-10 13:05:30 · 752 阅读 · 0 评论 -
Backbonejs之view
view控制的是如何显示,包括:显示的元素,元素绑定的时间以及操作上的交互逻辑。 下面的小例子展示了backbone的view类的使用:<!-- Backbone.js 依赖jquery和underscore --><script src="https://code.jquery.com/jquery-2.2.4.min.js"></script><script src="https://原创 2016-05-23 23:00:24 · 761 阅读 · 0 评论 -
Backbonejs之model
上一篇Backbonejs之router,秀了一下backbone的router的使用。这里在玩一下backbone的model。model可是backbone的核心。啥是model前端mvc的感念中,model到底是啥东西呢?见仁见智吧。backbone的作者定义如下: model是javascript程序的核心,它包括了交互式数据以及相关的逻辑处,比如转换、验证、计算属性和访问控制。用ba原创 2016-05-24 19:01:29 · 641 阅读 · 0 评论 -
javascript小技巧
本文参考:这里1. 使用!!操作符转换boolean类型在变量前面加上!!运算符,可以将变量转换为boolean类型。 可以将0, null, "", undefined, NaN这些变量转换为false,其余变量转换为true。function Account(cash) { this.cash = cash; this.hasMoney = !!cash;}var acco原创 2016-05-11 16:35:28 · 416 阅读 · 0 评论 -
javascript使用promise递归读取目录下所有文件
如题,主要是为了练习一下promise的使用。之前一直不知道promise对象的then函数还可以返回promise对象,以便达到链式调用的效果。 下面上代码,以记之~~~var fs = require('fs');var path = require('path');function readdirPromisify(dir) { return new Promise((resolv原创 2016-05-11 19:32:14 · 4823 阅读 · 1 评论 -
Backbonejs之router
上一篇Backbonejs之view,玩了一下backbone的view。这里在试一试backbone的router。 浏览器端的路由实现通常都是通过监听 hash tags(#)的变化来实现的。 backbone会把url中‘#’后面的字符串看待成路由,比如http://example.com/#/user/help,其中user/help就是一个路由。直接上代码演示一下backbone的ro原创 2016-05-24 12:08:34 · 731 阅读 · 0 评论 -
Backbonejs之collection
接上一篇[backbone之model]。 什么事collection? 一句话,models的有序集(simply an ordered set of models)。 上例子吧…note: 打开一个加载了backbone的页面,然后f12,在console里就可以玩这些代码了。// modelvar Song = Backbone.Model.extend({ defaults:原创 2016-05-25 10:13:03 · 423 阅读 · 0 评论 -
javascript引擎干了些什么事儿
JavaScript engine的基本工作任务是将javascript代码转换为快速优化的可供浏览器解释(interpreted)的代码。JavaScriptCore(用在Safari浏览器内)和V8 都是javascript引擎。javascript引擎可以用在浏览器内,无头浏览器内( PhantomJS)或者服务端nodejs中。JavaScriptCore的工作步骤: 1. 词法分析 2原创 2017-10-07 11:19:53 · 1155 阅读 · 0 评论
分享