JS(ES)
似曾相识-
http://blog.csdn.net/liaozhongping,不积跬步无以至千里,不积小流无以成江海
展开
-
浅谈JavaScript设计模式
创建型模式 :该模式处理的是用于创建对象的各种机制工厂方法抽象工厂建造者原型单例结构型模式:考虑的是对象的组成以及对象彼此之间的关系适配器桥接组合装饰器外观享元代理行为型模式:关注的是对象之间的依赖关系以及通信解释器模板方法责任链命令迭代器中介者备忘录观察者状态策略访问者模块模式var basic = {&nbs...原创 2019-04-23 23:07:33 · 388 阅读 · 0 评论 -
12种不宜使用的Javascript语法
1. ==Javascript有两组相等运算符,一组是==和!=,另一组是===和!==。前者只比较值的相等,后者除了值以外,还比较类型是否相同。请尽量不要使用前一组,永远只使用===和!==。因为==默认会进行类型转换,规则十分难记。如果你不相信的话,请回答下面五个判断式的值是true还是false: false == 'false' false == und原创 2016-04-27 13:28:14 · 344 阅读 · 0 评论 -
判断一个对象是不是JavaScript数组(怎样判断一个变量是数组)
(1)方法一:在编写程序时,我们经常需要获得一个变量的数据类型,大多数时候, typeof 运算符就能够告诉我们答案。var num = 1; // typeof(num) == 'number'var str = 'hello'; // typeof(str) == 'string'var boo = true; // typeof(boo) == 'boolean'转载 2015-06-21 02:08:29 · 2857 阅读 · 0 评论 -
JavaScript编码规范
JavaScript 编写规范规范内容(1)全局命名空间污染与 IIFE总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域。这一举措可防止全局命名空间被污染。IIFE 还可确保你的代码不会轻易被其它全局命名空间里的代码所修改(i.e. 第三方库,window 引用,被覆盖转载 2015-06-22 23:16:38 · 627 阅读 · 0 评论 -
JS引擎
当前主流四大引擎内核: Trident,Gecko,Presto,WebkitJS引擎功能作用 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。JavaScript最初由网景公司的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。以它为基础,制定了ECMAScript标 准。Java转载 2015-07-06 07:33:43 · 775 阅读 · 0 评论 -
JavaScript事件代理入门
JS - 事件代理 如果你想给网页添加点JavaScript的交互性,也许你已经听过JavaScript的事件代理(event delegation),并且觉得这是那些发烧友级别的JavaScript程序员才会关心的什么费解的设计模式之一。事实上,如果你已经知道怎么添加JavaScript的事件处理器(event handler),实现事件代理也是件轻而易举的事情。转载 2015-07-06 07:41:24 · 638 阅读 · 0 评论 -
JavaScript继承方式详解
js继承的概念js里常用的如下两种继承方式:原型链继承(对象间的继承)类式继承(构造函数间的继承)由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现在面向对象的语言中,我们使用类来创建一个自定义对象。然而js中所有事物都是对象,那么用什么办法来转载 2015-07-06 07:44:54 · 482 阅读 · 0 评论 -
JS三大经典变量命名法
(1)匈牙利命名法:通过在变量名前面添加相应小写字母的符号标示作为前缀,标示出变量的作用域,类型等,前缀后面是一个或多个单词组合,单词描述了变量的用途,如i表示的是整数,s表示的是字符串。示例:var sUserName = 'css8';var iCount = 0;(2)骆驼式/驼峰命名法混合使用大小写字母来构成变量的名称。示例:va转载 2015-09-18 10:38:24 · 1554 阅读 · 0 评论 -
<![CDATA[ ]]>(CDATA部件)
cdata是在XML文档里面使用的关键字,用来告诉浏览器,这部分内容不用解析,是给其他程序用的,比如JAVASCRIPT等等。在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"一个 CDATA 部件以""标记结束:?123456789转载 2015-09-19 04:04:40 · 1358 阅读 · 0 评论 -
JS逗号运算符的用法详解
一、逗号运算符的特性及作用 逗号运算符的作用是将若干表达式连接起来。它的优先级别在所有运算符中是最低的,结合方向是"自左至右"的。 (即:逗号运算符:是按顺序执行表达式,并且获得右边表达式的值。)如:3*3,4*4//16二、逗号表达式 逗号表达式的一般形式是:表达式1,表达式2,表达式3……表达式n 逗号表达式的求解过程是:先计算表达式1的值,再计算表达式2的值,原创 2016-04-26 21:16:41 · 4372 阅读 · 0 评论 -
移动,调整浏览器窗口
(1)IEIE提供了window.screenLeft和window.screenTop对象来判断窗口的位置,但未提供任何判断窗口的方法。用document.body.offsetWidth和document.body.offsetHeight属性可以获取视口的大小(显示HTML页的区域),但它们不是标准属性窗口位置:winodow.screenLeft,window.screen转载 2015-07-22 23:43:01 · 870 阅读 · 0 评论 -
js中获取时间new Date()详细介绍
1、var myDate = new Date();Date() 返回当日的日期和时间。getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getFullYear() 从 Date 对象以四位数字返回年份。ge转载 2016-04-13 02:36:04 · 73393 阅读 · 2 评论 -
JS中__proto__与prototype的关系
这里讨论下对象的内部原型(__proto__)和构造器的原型(prototype)的关系。一、所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty function)123456789Number.__proto__原创 2016-04-13 01:27:49 · 924 阅读 · 0 评论 -
js的replace详解
定义和用法replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。(JS 字符串有replace() 方法。但这个方法只会对匹配到的第一个字串替换,如果要全部替换的话,使用正则可以达成Replace 的效果)语法stringObject.replace(regexp/substr,replacement)参数 描述 regexp原创 2016-03-29 18:40:25 · 2767 阅读 · 0 评论 -
JavaScript中变量提升 Hoisting
一。案发现场 我们先看一段很简单的代码: 复制代码代码如下:var v='Hello World'; alert(v); 这个没有疑问吧,弹出“Hello World”。OK,我们继续。 我们在看一段Code: 复制代码代码如下:var v='Hello World'; (function(){ alert(v);原创 2015-07-26 10:47:23 · 591 阅读 · 0 评论 -
Modernizr的介绍和使用
传统浏览器目前不会被完全取代,令你难以将最新的 CSS3 或 HTML5 功能嵌入你的网站。 Modernizr 正是为解决这一难题应运而生,作为一个开源的 JavaScript 库,Modernizr 检测浏览器对 CSS3 或 HTML5 功能支持情况。 Modernizr 并非试图添加老版本浏览器不支持的功能,而是令你通过创建可选风格配置修改页面设计。 它也可以通过加载定制的脚本来模拟老版本转载 2016-05-07 17:28:34 · 436 阅读 · 0 评论 -
js里面关于位置坐标的总结
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度。 scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 scrollWidth:获取对象的滚动宽度 offs转载 2015-07-25 15:26:22 · 998 阅读 · 0 评论 -
js中apply、call和bind的区别
1.相同点(1)都可以用来改变函数的this的指向(2)使用时第一个参数都是this所指向的对象,并且都可以后续参数传参2.区别(1)call跟apply只是参数传参的方式不一样,call以多个参数形式传入,而apply则以数组的形式传入(2)bind传参的方式可以跟call一样,由于bind返回的是一个函数,因此我们也可以在调用的时候在进行传参下面看两个例子:原创 2018-01-04 15:38:32 · 430 阅读 · 0 评论 -
ES6的Promise详解
ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。 ES6 Promise 先拉出来遛遛复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?转载 2017-10-21 17:31:25 · 976 阅读 · 0 评论 -
JS的document.execCommand()
document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数])其中:sCommand为指令参数(如下例中的”2D-Position”),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框(下例中的”false”即表示不显示对话框),动态参数一般为一可转载 2017-10-21 16:34:54 · 518 阅读 · 0 评论 -
Base.js 库 实现 JS 的对象化编程
最近在研究JS的面向对象编程。由于JS使用Function的概念来代替Class,往往使用这种方式来定义一个对象: function JSClass() { //成员变量 this.m_Text = 'division element'; this.m_Element = document.createElement('DIV转载 2017-06-27 00:50:48 · 3733 阅读 · 0 评论 -
论ES6模块系统的静态解析
本文是Dave Herman的《Static module resolution》一文的编译。Dave Herman是TC39的成员,ES6 module系统的champion。【ES6 spec太大了,所以分成许多可相对独立的特性集合,分别交给一个或几个主导人负责,TC39委员会则会定期开会进行审阅和讨论。主导人就称之为champion。】 在纯JS环境下已经有多种模块系统。比如原创 2017-03-31 12:31:25 · 2061 阅读 · 0 评论 -
js的 new image()
创建一个Image对象:var a=new Image(); 定义Image对象的src: a.src=”xxx.gif”; 这样做就相当于给浏览器缓存了一张图片。图像对象:建立图像对象:图像对象名称=new Image([宽度],[高度])图像对象的属性: border complete height hspace lowsrc name src vs转载 2016-11-25 17:11:30 · 1109 阅读 · 0 评论 -
用Javascript获取页面元素的位置
一、网页的大小和浏览器窗口的大小首先,要明确两个基本概念。一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚转载 2016-11-25 13:55:09 · 3971 阅读 · 0 评论 -
Javascript中的apply、call、bind
apply、call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。先来一个栗子:1转载 2016-11-24 11:43:28 · 401 阅读 · 0 评论 -
JavaScript的计时器的工作原理
最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成中文,一来是为了和大家分享,二来是为了加深自己对于JavaScript的理解。原文链接:http://ejohn.org/blog/how-javascript-timers-work/原文翻译:从基础层面来讲,理解JavaSc转载 2016-11-24 00:43:44 · 785 阅读 · 0 评论 -
jQuery的deferred对象和promise对象
Promise是一种令代码异步行为更加优雅的抽象,有了它,我们就可以像写同步代码一样去写异步代码。jQuery从1.5版本开始实现了CommonJS Promise/A规范这一重量级方案,不过没有严格按照规范进行实现,有一些API上的差异。1、deferred对象的方法:(1) $.Deferred() 生成一个deferred对象。 (2原创 2016-03-16 02:25:35 · 2181 阅读 · 0 评论 -
js数组去重
(1)第一种是比较常规的方法:思路:1.构建一个新的数组存放结果2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比3.若结果数组中没有该元素,则存到结果数组中复制代码 代码如下:Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i原创 2016-04-14 01:30:42 · 475 阅读 · 0 评论 -
js的delete运算符深入解析
摘自:kangax 的一篇文章 "Understanding Delete(http://perfectionkills.com/understanding-delete/#comment-166660)";delete就是删除某些东西,更具体的说,它会删除对象的属性。1、delete运算符一般不会删除普通变量var benjamin = "http://www.zuojj.com";转载 2016-07-28 18:25:01 · 5755 阅读 · 1 评论 -
JS的对象,事件
1、常用事件: abortonabort(对象载入被中断时)bluronblur(元素失去焦点)changeonchange(选中的元素变化)clickonclick(单击鼠标)dblclickondblclick(双击鼠标左键)erroronerror(当JS脚本出错时,在Window对象上触发,当出错时在其上触发,当指定对象无法载入时触发)f原创 2016-04-24 19:11:23 · 1082 阅读 · 0 评论 -
JS中的异常处理方法
js中的异常处理在JavaScript可以使用try...catch来进行异常处理。例如: try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);} 目前我们可能得到的系统异常主要包含以下6种:EvalError: raised when an error occurs executin转载 2015-07-25 15:24:47 · 1078 阅读 · 0 评论 -
用Function类创建函数的缺点
语法:var funcion_name = new Function(argument1, argument2, ..., argumentN, function_body); 缺点:尽管可用Function构造函数创建函数,但是最好还是不要使用它,因为它定义函数比用传统方式要慢的多。不过,所有函数都应该看作是Function类的实例。 扩原创 2015-07-22 23:44:05 · 616 阅读 · 0 评论 -
JS的Global对象
Global对象Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。例如:尝试编写下面的代码。将得到错误(错误消息显示Global不是对象):var pointer = Global; 需要理解的是:在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。如:isNaN()、isFinite()、parseInt()和par原创 2015-07-22 23:46:39 · 1658 阅读 · 0 评论 -
JS的乘法,除法,取模,加法,减法运算
一、乘法运算如果运算数都是数字,执行常规的乘法运算。如果结果太大或太小,那么生成的结果就是Infinity或 -Infinity(1)如果某个运算数是NaN,结果为NaN (2)Infinity乘以0,结果为NaN(3)Infinity乘以0以外的数字,结果为Infinity或-Infinity,由第二个运算数的符号决定(4)Infinity乘以Infinity,结果为Infi原创 2015-07-22 23:47:23 · 10173 阅读 · 0 评论 -
javascript的alert()与console.log()
我们在做js调试的时候使用 alert 可以显示信息,调试程序,alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死。而且 alert 显示对象永远显示为[object ]。 自己写的 log 虽然可以显示一些 object 信息,但很多功能支持都没有 console 好[1]alert() [1.1]有阻塞作用,不点击确定,后续代码无法继续原创 2015-09-27 02:08:30 · 1211 阅读 · 0 评论 -
(function ( ){...})( ) 与 (function ( ){...}( )) 有区别
两个没有区别。你需要明白 IIFE 的原理,我简单说一下:function foo() {...} // 这是定义,Declaration;定义只是让解释器知道其存在,但是不会运行。foo(); // 这是语句,Statement;解释器遇到语句是会运行它的。IIFE 并非必须,传统一点可以这么写:function原创 2015-09-27 02:11:03 · 439 阅读 · 0 评论 -
JavaScript数组小结
定义 定义空数组 var arr = new Array(); var arr = []; 定义一个包含1,2,3的数组 var arr = [1,2,3]; var arr = new Array(1,2,3);插入 push():数组的末尾加入值12转载 2015-10-31 12:16:24 · 504 阅读 · 0 评论 -
JavaScript单线程和浏览器事件循环简述
JavaScript单线程JavaScript这门语言运行在浏览器中,是以单线程的方式运行的。说到单线程,就得从操作系统进程开始说起。进程和线程都是操作系统的概念。进程是应用程序的执行实例,每一个进程都是由私有的虚拟地址空间、代码、数据和其它系统资源所组成;进程在运行过程中能够申请创建和使用系统资源(如独立的内存区域等),这些资源也会随着进程的终止而被销毁。而线程则是进程内的一个独立执行单转载 2015-10-31 12:25:30 · 461 阅读 · 0 评论 -
js跨域解决方案
什么是跨域?概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。(所谓同源是指,域名,协议,端口相同。),对于端口和协议的不同,只能通过后台来解决。URL 说明 是否允许通信http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许http://www.a.co原创 2016-04-01 17:50:44 · 6037 阅读 · 0 评论 -
Javascript:谈谈JS的全局变量跟局部变量
如下两段JS代码的区别:[javascript] view plain copy"text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a转载 2016-03-21 07:54:07 · 563 阅读 · 0 评论