javascript
文章平均质量分 82
alex8046
十年磨一贱。
展开
-
悟透JavaScript 之 甘露模型(新)
注意:如果您尚未阅读过原来那篇老文章《悟透JavaScript》,请先行阅读该文,以了解上下文关系。在上面的示例中,我们定义了两个语法甘露,一个是Class()函数,一个是New()函数。使用Class()甘露,我们已经可以用非常优雅的格式定义一个类。例如前例中的:转载 2014-11-07 17:14:05 · 567 阅读 · 0 评论 -
悟透JavaScript —— 李战(leadzen)
引子 编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。 数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。 你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一转载 2014-11-07 08:22:23 · 683 阅读 · 0 评论 -
Javascript 中 null、NaN和undefined的区别
1.类型分析:js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。var a1;var a2 = true;var a3 = 1;var a4 = "Hello";var a5 = new Object();var a6 = null;var a7 = NaN;var a8 = unde转载 2014-11-07 17:58:41 · 475 阅读 · 0 评论 -
深入理解JavaScript内部原理(1): 执行上下文
概要 在这篇文章中,我们将向大家介绍ECMAscript的可执行上下文以及相关的可执行上下文的类型定义每当控制器进入ECMAscript可执行代码的时候,控制器就进入了一个可执行上下文。可执行上下文(简称EC)是一个抽象的概念,在ECMA262中用他来区分不同类型的可执行代码标准规范中并没有从技术实现的角度来定义执行上下文的具体结构和类型;这是实现标准的ECMASc转载 2014-11-09 15:37:38 · 944 阅读 · 0 评论 -
悟透JavaScript
引子 编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。 数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。 你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一转载 2014-10-28 11:12:23 · 486 阅读 · 0 评论 -
Javascript模块化编程(一):模块的写法
作者: 阮一峰随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑。Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经转载 2014-10-28 14:59:56 · 458 阅读 · 0 评论 -
Javascript模块化编程(三):require.js的用法
作者: 阮一峰这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。我采用的是一个非常流行的库require.js。一、为什么要用require.js?最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。转载 2014-10-28 15:19:16 · 453 阅读 · 0 评论 -
全面理解javascript的caller,callee,call,apply概念(修改版)
(注:在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义 2007-05-21)在提到上述的概念之前,首先想说说javascript中函数的隐含参数:argumentsArguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的Function转载 2014-10-28 15:44:11 · 476 阅读 · 0 评论 -
javascript中得in运算符
1、For...In 声明用于对数组或者对象的属性进行循环/迭代操作。 对于数组 ,迭代出来的是数组元 素,对于对象 ,迭代出来的是对象的属性;var xvar mycars = new Array()mycars[0] = "Saab"mycars[1] = "Volvo"mycars[2] = "BMW"for (x in mycars){转载 2014-10-29 14:23:43 · 946 阅读 · 0 评论 -
Javascript模块化编程(二):AMD规范
作者: 阮一峰这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块。(接上文)七、模块的规范先想一想,为什么模块很重要?因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套转载 2014-10-28 15:07:23 · 365 阅读 · 0 评论 -
理解 JavaScript 作用域和作用域链
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命转载 2014-10-28 16:13:26 · 537 阅读 · 0 评论 -
深入理解Javascript闭包(closure)
一、什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码: function a转载 2014-11-15 11:15:23 · 455 阅读 · 0 评论 -
关于(function( window, undefined ) {})(window)写法的理解
(function( window, undefined ) {})(window);这个,为什么要将window和undefined作为参数传给它?(function( $, undefined ) {})(jQuery); 同理因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率。unde转载 2014-11-17 17:59:13 · 1412 阅读 · 0 评论 -
typeof的用法汇总
JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. > typeof undefined 'undefined' > typeof null // well-known bug 'object' > typeof true 'boole转载 2014-11-18 09:42:14 · 2640 阅读 · 0 评论 -
给input[text]添加icon,并且绑定事件
原创 2014-11-20 16:31:41 · 6606 阅读 · 0 评论 -
javascript中的new操作符
按照javascript语言精粹中所说,如果在一个函数前面带上new来调用该函数,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将被绑定到那个新对象上。这个话很抽象,我想用实例来让自己加深理解。1.如果就一个函数,没有返回值,没有prototype成员,然后使用new,会是什么结果呢?如果一个函数没有返回值,那么如果不使用new来创建变量,那么该变量的值为un转载 2014-11-20 16:55:55 · 502 阅读 · 0 评论 -
关于JS中的constructor与prototype
我们都知道,在JS中有一个function的东西。一般人们叫它函数。比如下面的代码js代码:function Person(name){ alert(name);}Person('js');//js 上面的代码中,Person的表现的确跟一般的函数没有什么区别,接着看下面的代码:function Person(name){ this.nam转载 2014-11-21 10:59:01 · 528 阅读 · 0 评论 -
完美实现溢出文本省略
文本溢出展示省略号的需求经常都会用到,而对于新式的浏览器,这完全不是问题,因为css3里面已经有实现text-overflow:ellipsis,但是最新w3c文档中却移除了这个属性,即使这样,也有不少浏览器实现了这个特性。其浏览器支持情况如下:IE Firefox Opera Safari Chrome6+ - 11.0+ 3.0+ 1.0+可以看到,只有firefox和opera转载 2014-11-21 16:54:04 · 653 阅读 · 0 评论 -
JavaScript封装
封装可以被定义为对对象的内部数据表现形式和实现细节进行隐藏。通过封装可以强制实施信息隐藏。在JavaScript中,并没有显示的声明私有成员的关键字等。所以要想实现封装/信息隐藏就需要从另外的思路出发。我们可以使用闭包的概念来创建只允许从对象内部访问的方法和属性,来达到封装的要求。基本方式一般来说,我们学用的有三种方法来达到封装的目的。使用this.XXX来声明转载 2014-11-21 14:59:32 · 444 阅读 · 0 评论 -
JavaScript string 字符串类型的扩展函数
1. Js 判断前缀后缀代码和判空(含全部是空格):转载 2014-11-13 18:22:51 · 1330 阅读 · 0 评论 -
javascript获取服务器时间
function getServerTime(){ var xmlHttp = false; //获取服务器时间 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }原创 2015-02-10 15:15:20 · 408 阅读 · 0 评论 -
setTimeout原理
function a() { setTimeout(function(){alert(1)},0); alert(2);}a();和其他的编程语言一样,Javascript中的函数调用也是通过堆栈实现的。在执行函数a的时候,a先入栈,如果不给alert(1)加setTimeout,那么alert(1)第2个入栈,最后是alert(2)。但现在给alert(1)加上s转载 2015-02-26 13:58:56 · 581 阅读 · 0 评论 -
js中几种实用的跨域方法原理详解
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。下表给出了相对http://store.company.com/dir/page.html同源检测的结果:要解决跨域的问题,我们可以使用以下几种方法:一转载 2015-02-28 14:34:07 · 341 阅读 · 0 评论 -
HTML5 Canvas 实现本地压缩图片
canvas压缩本地图片。document.getElementById("myImg").onload=function(){ var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("myImg"); ctx.draw转载 2015-02-15 16:01:13 · 1672 阅读 · 0 评论 -
javascript正则表达式(test|match|search|replace|split|exec)
test:测试string是否包含有匹配结果,包含返回true,不包含返回false。 [javascript] view plaincopy"text/javascript"> var str = "bbs.byr.cn"; var reg = /b/; var ret = reg.test(str);转载 2015-02-15 16:41:39 · 591 阅读 · 0 评论 -
JS中数组的操作
1、数组的创建var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要转载 2015-02-15 15:31:49 · 391 阅读 · 0 评论 -
js生成随机数的方法实例总结
js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要:(1)生成一个 0 - 100 之间的随机整数,那么则可以:parseInt(100*Math.random()); 注意:因为Math.random()的转载 2015-02-28 12:29:59 · 2983 阅读 · 0 评论 -
HTML5 中 postMessage sendMessage使用
Web Workers 简介至 2008 年 W3C 制定出第一个 HTML5 草案开始,HTML5 承载了越来越多崭新的特性和功能。它不但强化了 Web 系统或网页的表现性能,而且还增加了对本地数据库等 Web 应用功能的支持。其中,最重要的一个便是对多线程的支持。在 HTML5 中提出了工作线程(Web Workers)的概念,并且规范出 Web Workers 的三大主要特征:能够长转载 2015-02-28 14:53:06 · 4425 阅读 · 0 评论 -
JavaScript 有多灵活?
JavaScript 是一种灵活的语言,表达力极强,我来举一个例子,保证让很多人大吃一惊。本文受到了 Kyle Simpson 的文章《Iterating ES6 Numbers》的启发。首先,在 Number.prototype 对象上,部署一个 add 方法。Number.prototype.add = function (x) { return th转载 2015-03-25 19:48:26 · 415 阅读 · 0 评论 -
Unicode与JavaScript详解
一、Unicode是什么?Unicode源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。它从0开始,为每个符号指定一个编号,这叫做"码点"(code point)。比如,码点0的符号就是null(表示所有二进制位都是0)。U+0000 = null上式中,U+表示紧跟在后面的转载 2015-03-25 20:02:18 · 498 阅读 · 0 评论 -
理解JavaScript中的事件路由冒泡过程及委托代理机制
我们先看个简单的例子。 先假设我们有一组按钮,我一次点击一个按钮,然后我希望被点中的状态设为"active"。再次点击时取消active。 然后,我们可以写一些HTML: Pencil Pen Eraser 我可以用一些标准的Javascript事件处理上面的逻辑: var buttons = document.querySelectorAll(转载 2015-03-27 16:38:15 · 433 阅读 · 0 评论 -
JavaScript 运行机制详解:再谈Event Loop
一、为什么JavaScript是单线程?JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定Java转载 2015-03-27 14:30:18 · 468 阅读 · 0 评论 -
jquery全局ajax参数详细执行分析-$.ajax竟然可以这样用!
本文分析的问题,比较奇葩。可能大家在一般的项目中都用不到。所以首先要先了解这个应用场景。反正我分析了之后才发现jquery全局$.ajax竟然可以这样用!1、背景在页面中使用ajax请求进行异步操作这个现在比较常用,我们会在ajax开始时候加个进度显示,在complete之后隐藏即可。但是要是页面内有多个ajax请求,我们怎么处理这个进度那?单个单个处理肯定会很麻烦,比如你转载 2015-03-27 16:45:23 · 629 阅读 · 0 评论 -
javascript setTimeout面试题分析
1、题目/**面试官给的原题目如下:*执行mytest()后,控制台输出内容是_____*function mytest() {* for(var i = 0; i < 5; i ++)* setTimeout(console.log(i),0);*}*但这应该不是面试官的问题,当时我也没有发现问题,回来测试后才发现,这个函数不是*面试官要表达的意思。*/转载 2015-03-27 16:48:07 · 1803 阅读 · 0 评论 -
javascript 定时器工作原理
在对JS本质理解的层面上,重要的是了解JS定时器是如何工作的。很多时候我们觉得定时器的执行不够直观,那因为它们运行在单线程的环境里。我们先来仔细观察下面三个js的内置函数,然后我们再具体去使用它们:1.var id= setTimeout(fn,delay);说明:setTimeout这个内置函数的功能是启动一个定时器,这个定时器在指定的延迟时间 (delay,单位为毫秒(ms转载 2015-03-20 17:31:33 · 699 阅读 · 0 评论 -
Javascript引擎单线程机制及setTimeout执行原理说明
setTimeout用法在实际项目中还是会时常遇到。比如浏览器会聪明的等到一个函数堆栈结束后才改变DOM,如果再这个函数堆栈中把页面背景先从白色设为红色,再设回白色,那么浏览器会认为DOM没有发生任何改变而忽略这两句话,因此我们可以通过setTimeout把“设回白色”函数加入下一个堆栈,那么就可以确保背景颜色发生过改变了(虽然速度很快可能无法被察觉)。 总之,s转载 2015-03-20 17:24:39 · 2076 阅读 · 0 评论 -
针对webkit的HTML, CSS和Javascript
总结一些更多的针对webkit的HTML, CSS和Javascript方面的特性.HTML, 从HTML文档的开始到结束排列: 让内容的宽度自适应为设备的宽度, 在做Mobile Web时必须加的一条 禁用手机号码链接(for iPhone) 设置你网页的图标, 尺寸为57X57 px 全屏启动时候的启动画面图像,转载 2015-03-20 17:26:12 · 557 阅读 · 0 评论 -
使用setTimeout或setInterval时遇到的问题总结
写定时器分两种写法,setInterval和setTimeout。先来说setInterval:setInterval(code,millisec[,"lang"])setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterv转载 2015-03-20 17:34:35 · 8346 阅读 · 0 评论 -
几道容易出错的JavaScript题目
1.function Container( properties ) { var objthis = this; for ( var i in properties ) { (function(){ var t = properties[i]; objthis[ "get" + i ] = func转载 2015-03-20 17:23:46 · 395 阅读 · 0 评论 -
jQuery的deferred对象详解
一、什么是deferred对象?开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,jQuery的功能非常弱。为了转载 2015-03-10 16:14:45 · 306 阅读 · 0 评论