JavaScript
文章平均质量分 59
zhoulu_hp
这个作者很懒,什么都没留下…
展开
-
JavaScript模块化开发2
前面提到如何使用原生JavaScript实现模块化开发,接下来讲解如何使用一些第三方规范来进行模块化开发。 说到模块化规范,主要分为两种:CommonJS和AMD。 1. CommonJS规范 如果了解NodeJS的话,我们就会知道NodeJS实现了CommonJS规范,来模块化开发的。 使用时就两步:i).定义好模块后,使用exports导出模块;ii).原创 2016-03-12 18:07:51 · 466 阅读 · 0 评论 -
JavaScript数组常用方法总结
在JavaScript中,我们需要时常对数组进行操作,现在特将常用方法总结如下: 1.增加数据 在JavaScript为数组增加数据主要分为两种方式。 从数组末尾增加内容:push方法 从数组的前端增加内容:unshift方法 这两种方法的返回值都是数组的长度var arr=[1,2,3];//从末尾增加arr.push(4);co原创 2017-01-13 00:05:17 · 1139 阅读 · 0 评论 -
type为text的input标签的相关事件对比
在工作中,我们可能时常需要对type为text的input标签绑定事件,但我们是否了解这一些事件的区别? onchange: 当input的值发生改变时,所触发的,但这个事件的特点是,必须失去焦点才真正的触发。 oninput: 当input的值发生改变时,所触发的,但它不需要失去焦点就可以触发。 onkeydown: 按下键时触发,但这个时候获取input的值还是没原创 2017-01-12 23:30:30 · 2235 阅读 · 0 评论 -
RxJS的介绍
RxJS v4.0Reactive Extensions (Rx) 是一个基于事件的异步编程库,它是一种使用可观察序列(observable sequences)和LINQ风格的查询操作 。数据序列(Data sequences)可以是多种类型,比如:来做文件或web service的流,web services requests,系统通知,甚至可以是各种事件。Reactive Ext翻译 2016-11-17 15:52:54 · 1167 阅读 · 0 评论 -
JavaScript的异步开发
最近一个使用JavaScript开发的SharePoint项目,里面需要使用各种JavaScript去操作SharePoint的list,但在开发过程中,我被JavaScript的异步彻底击毁,一直以来,我以为我掌握了JavaScript的异步,但我发现我只掌握了一些皮毛,所以我将我在这个项目中对异步做如下总结。 要实现JavaScript的异步,可以采用如下方法: 1.回调函原创 2016-03-12 18:47:35 · 321 阅读 · 0 评论 -
前端跨域问题总结
我想大家在进行JavaScript开发时,经常遇到类似如下的错误: 之前我遇到跨域问题都是在Chrome浏览器中配置 --allow-file-access-from-files即可(http://blog.csdn.net/zhoulu001/article/details/50483245)。但这样做不是解决办法。因此特地总结了一下如何跨域的问题。 跨域基本有如下解原创 2016-03-16 12:15:07 · 669 阅读 · 0 评论 -
构建流式应用—RxJS详解
最近在 Alloyteam Conf 2016 分享了《使用RxJS构建流式前端应用》,会后在线上线下跟大家交流时发现对于 RxJS 的态度呈现出两大类:有用过的都表达了 RxJS 带来的优雅编码体验,未用过的则反馈太难入门。所以,这里将结合自己对 RxJS 理解,通过 RxJS 的实现原理、基础实现及实例来一步步分析,提供 RxJS 较为全面的指引,感受下使用 RxJS 编码是怎样的体验。转载 2016-11-07 21:56:27 · 11863 阅读 · 0 评论 -
JavaScript浅复制和深复制的区别
理解JavaScript浅复制和深复制之前,我们需要先了解js的数据类型:基本数据类型和引用类型。 基本数据类型:undifined, null, Number, String ,Boolean,这一些是存放在栈stack中的。 引用数据类型:Object, Array等,这一些事存放在堆heap中的。 1.浅复制 看如下代码:var myObj1={原创 2016-10-17 11:57:26 · 411 阅读 · 0 评论 -
JavaScript原型链
JavaScript是基于原型链的面向对象语言,因此我们有必要好好了解一下原型链,在JavaScript中的所以对象,组成了一个原型树,沿着一个对象我们可以向上遍历,这就形成了一条原型链。 说到原型链,我们有必要了解一下什么是原型以及Function和Object的关系。 1.原型: JavaScript中每个对象都有一个对应的prototype的原型对象,原型主要是原创 2016-03-16 15:09:51 · 423 阅读 · 0 评论 -
JavaScript常用设计模式
1.构造器模式 我们都知道JavaScript的对象和function有着千丝万缕的关系,每个对象都可以看成是通过new一个function来创建的。而这个过程就可以看成是构造器模式。var MyObj=function(){ this.name="Scott";}var obj=new MyObj();console.log(obj.name) 2原创 2016-10-21 14:47:12 · 1911 阅读 · 0 评论 -
前端开发之如何兼容IE8等旧IE浏览器
最近一个采用angular的前端项目需要兼容IE8浏览器,为了兼容这旧版本的IE浏览器,花费不少时间,先特将心得记录如下。为了使不兼容HTML5和CSS3新特性的IE等浏览器兼容最新特性,其实已经有人写了一些库。 1. html5shiv html5shiv主要解决HTML5提出的新的元素不被IE6-8识别,这些新元素不能作为父节点包裹子元素,并且不能应用CSS样式。让CSS 样式应用原创 2016-09-08 18:38:13 · 10770 阅读 · 0 评论 -
Jquery根据id获取属性的一个奇怪问题
我们都知道html代码需要规范,但有时一些页面不是有我们所能控制的,比如SharePoint的一些页面。其中一些页面的id属性的值包含点号等特殊字符。当我在使用Jquery是发现一些奇怪的现象,特记录如下: 有如下html代码,其中id的值包含点号。 当我们使用如下Jquery语句去获得这个元素对象时,无法获得这个元素对象,返回值是空数组[]。$("#user1.nam原创 2016-04-22 17:03:30 · 639 阅读 · 0 评论 -
JavaScript数组去重
JavaScript去重,我相信方法很多,但今天记录几种常用的。 1.第一种方式: 我相信很多人很快会想到利用数组的indexOf方法来去重,var arr=[1,2,3,'hello','','1','2'];var removeduplicatedArray=function(arr){ var newArr=[]; for(var i=0;i<arr.len...原创 2016-04-16 21:08:47 · 352 阅读 · 0 评论 -
JavaScript模块化开发1
JavaScript模块化开发时非常重要的开发方式,由于JavaScript没有java那样的package的概念,那么JavaScript如何实现模块化开发呢?有如下方式: 1.function方式: 众所周知,JavaScript的作用域是function级别的,所以我们可以将我们的代码放在一个function中作为一个模块,这样做是非常方便简单的,但这样的方式有一个致命的原创 2015-12-23 02:22:24 · 510 阅读 · 0 评论 -
LazyLaod.js用法
如果一个html页面需要加载JavaScript文件,我们一般的做法都是在页面的head中加载它。 但如果随着项目的不断增大,需要加载的JavaScript文件也变多的话,如果还是使用这种方式去加载的话,会影响程序的性能,那么如何解决这个问题呢?答案是延迟加载js文件。 有一个非常小巧的js库可以很好的实现js的延迟加载——LazyLoad.js,下载地址原创 2015-12-23 02:57:25 · 584 阅读 · 0 评论 -
JavaScript继承
JavaScript没有java中的extends关键字去实现继承,那么它如何实现自己的继承呢? 1.prototype方式: JavaScript每个对象都一个prototype属性,这个属性的含义为:返回对象类型原型的引用。var myObject=function(){}myObject.prototype.add=function(i,j){return i+j原创 2015-12-30 13:43:59 · 332 阅读 · 0 评论 -
从两段代码中理解JavaScript的单线程和异步
学习JavaScript需要理解它是单线程的,以及它异步的机制。现在我们从两段代码中来理解。 1. JavaScript代码1:var print=function(){ for(i=0;i<5;i++){ setTimeout(function(){ console.log(i); },1000); } }print(); 这段代码的输出结果是什原创 2016-02-28 23:26:59 · 513 阅读 · 0 评论 -
JavaScript中Promise和setTimeout的区别
最近在看vue源码,发现vue中的nextTick异步更新dom操作是先判断是否支持Promise,如果不支持就判断是否支持MutationObserval,如果也不支持的话,最后才是setTimeout。/** * Defer a task to execute it asynchronously. */var nextTick = (function () { var cal...原创 2018-03-12 20:16:29 · 7957 阅读 · 1 评论