代码改变世界

随笔分类 - javascript基础

堆 和 栈的 区别(经典)

2014-02-13 22:52 by sniper007, 163 阅读, 收藏, 编辑
摘要:此文章虽然是面向C/C++程序员写得,但是对咱们Java程序员还是很有帮助的。堆和栈的区别一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在 阅读全文

Javascript的堆和栈的简单理解

2014-02-13 22:51 by sniper007, 624 阅读, 收藏, 编辑
摘要:1 2 3 4 5 Javascript中堆和栈的简单理解 6 7 8 9 53 54 阅读全文

JavaScript世界的一等公民 - 函数

2014-01-15 20:34 by sniper007, 254 阅读, 收藏, 编辑
摘要:简介在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针(function pointer)、代理(delegate)等特殊的方式周折一番。而在JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一级函数(First-class Function)。不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个 阅读全文

宿主环境(host environment)

2014-01-15 19:11 by sniper007, 1187 阅读, 收藏, 编辑
摘要:在此前的内容中,我讨论的都是JavaScript语言及其规范,而并非该语言的应用环境。在大多数人看来,JavaScript应用环境都是Web浏览器,这也的确是该语言最早的设计目标。然而从很早开始,JavaScript语言就已经在其他的复杂应用环境中使用,并受这些应用环境的影响而发展新的语言特性了 。JavaScript的应用环境,主要由宿主环境与运行期环境构成。其中,宿主环境是指外壳程序(Shell)和Web浏览器等,而运行期环境则是由JavaScript引擎内建的。图1-8说明由它们共同构建的对象编程系统的基本结构:图1-8 由宿主与运行期构成的应用环境1.5.1 宿主环境(host e.. 阅读全文

HTML5安全:CORS(跨域资源共享)简介【转】

2013-10-15 20:15 by sniper007, 200 阅读, 收藏, 编辑
摘要:前言:像CORS对于现代前端这么重要的技术在国内基本上居然很少有人使用和提及,在百度或者Google上搜索CORS,搜到的中文文章基本都是 另外一种卫星定位技术CORS的介绍,让我等前端同学情何以堪(对比起来,用Google搜到的国外文章,基本都是跨域资源共享的介绍,说明了前端技术在 国内外环境和发展的巨大差距)。 我之前《用HTML5实现人脸识别》这篇文章中提到了“Face.com实现了CORS(跨域资源共享)。CORS系统基本上可以让服务器暴露给其它域上文件的Ajax调用。这是一个伟大的功能,我希望更多的服务能够使用它。”在这篇文章介绍的实现方式里,我们可以自由的使用自己本域的JS代... 阅读全文

SPDY以及示例

2013-10-15 19:52 by sniper007, 299 阅读, 收藏, 编辑
摘要:SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 。Google最早是在Chromium中提出的SPDY协议[1]。目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务。SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准(现为互联网草案[2]),Google Chrome[3],Mozilla Firefox,Opera和Internet Explorer[4]均已支持SPDY协议。SPDY协议类似于HTTP,但旨在缩短网页的加载时间和提高安全性。SPDY协议通过压缩、多路复用和优先级来缩短加载时间[1]。SPDY 阅读全文

【javascript基础】之【__lookupSetter__ 跟 __lookupSetter__】

2013-10-12 12:39 by sniper007, 2541 阅读, 收藏, 编辑
摘要:描述:返回getter setter所定义的函数语法:1 obj.__lookupGetter__(sprop)参数:getter setter中定义的字符串属性注意:这不是标准的方法,ecmascript5里已提供标准的方法,getOwnPropertyDescriptor 和 getPrototypeOf浏览器支持情况:ie6,7,8,9 不支持,其他浏览器都支持demo:Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)}); console.log(Date.prototype 阅读全文

【javascript基础】函数前面的一元操作符

2013-09-30 11:22 by sniper007, 112 阅读, 收藏, 编辑
摘要:在函数前面加:+ ; ~ ! - 等等一元操作符,javascript 引擎都会将后面的statement转换成表达式(expression),这样就可以调用了。 阅读全文

【javascript基础】运算符优先级

2013-09-30 11:19 by sniper007, 91 阅读, 收藏, 编辑
摘要:优先级运算类型关联性运算符1成员运算符从左到右.[]new从右到左new2函数调用运算符从左到右()3自增运算符n/a++自减运算符n/a--4逻辑非运算符从右到左!按位非运算符从右到左~一元加运算符从右到左+一元减运算符从右到左-typeof从右到左typeofvoid从右到左voiddelete从右到左delete5乘法运算符从左到右*除法运算符从左到右/取模运算符从左到右%6加法运算符从左到右+减法运算符从左到右-7位移运算符从左到右>>>>8关系运算符从左到右>=in从左到右ininstanceof从左到右instanceof9相等运算符从左到右==!== 阅读全文

【javascript基础】 原生JSON.parse解析异常问题

2013-09-10 18:14 by sniper007, 600 阅读, 收藏, 编辑
摘要:【问题背景】用jQ,ajax返回json,返回的字符串如:{name:"suntiger035"},status:200,readyState:4,代码无任何问题,结果,success死都不促发,error倒是促发【解决问题】后来把返回的数据改成{"name":"suntiger035"},没问题了,然后各种尝试,每个key value都必须双引号,不能使单引号,足见JSON.parse对json数据格式的检查有多严格 阅读全文

【javascript基础】JS计算字符串所占字节数

2013-09-09 14:24 by sniper007, 4563 阅读, 收藏, 编辑
摘要:废话不说,直接正题吧。最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的。而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16。因此本文只对这两种编码进行讨论。下面这个定义摘自维基百科(http://zh.wikipedia.org/zh-cn/UTF-8),做了部分删减。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII相容,使用一至四个字节为每个 阅读全文

【ecmascript】Javascript 严格模式详解【转】

2013-08-27 07:43 by sniper007, 216 阅读, 收藏, 编辑
摘要:一、概述除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全; - 提高编译器效率,增加运行速度; - 为未来新版本的Javascript做好铺垫。"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器, 阅读全文

【javascript基础】 广告嵌套document.write的非iframe方式的延迟加载

2013-07-09 15:16 by sniper007, 311 阅读, 收藏, 编辑
摘要:用ControlJS优化阿里妈妈广告http://ued.taobao.com/blog/2011/03/controljs-alimama/让document.write的广告无阻塞的加载http://stylechen.com/rewrite-documentwrite.htmlDomWriter:延迟调用含有document.write的外部JS脚本http://www.bigline.cn/blog/2010/12/02/dom-writer/页面Flash只有在显示的时候才会被加载http://morningbzy.blog.163.com/blog/static/144088527 阅读全文

【javascript基础】 JavaScript defer和async区别

2013-07-09 12:32 by sniper007, 225 阅读, 收藏, 编辑
摘要:defer该属性用来通知浏览器,这段脚本代码将不会产生任何文档内容。例如 JavaScript代码中的document.write()方法将不会骑作用,浏览器遇到这样的代码将会忽略,并继续执行后面的代码。属性只能是 defer,与属性名相同。在HTML语法格式下,也允许不定义属性值,仅仅使用属性名。async该属性为html5中新增的属性,它的作用是能够异步地下载和执行脚本,不因为加载脚本而阻塞页面的加载。一旦下载完毕就会立刻执行。async和defer一样,都不会阻塞其他资源下载,所以不会影响页面的加载,但在async的情况下,js文档一旦下载完毕就会立刻执行,所以很有可能不是按照原本的顺序 阅读全文

【javascript基础】 js判断flashplayer是否已安装,并显示flash player版本【转】

2013-06-14 15:20 by sniper007, 207 阅读, 收藏, 编辑
摘要:1 function flashChecker() 2 { 3 var isSuportFlash = flase; //是否安装了flash 4 var flashVersion = 0; //flash版本 5 6 if( window.ActiveXObject ) { 7 var swf = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 8 if( swf ) { 9 isSuportFlash = true;10 ... 阅读全文

【ecmascript】 ECMAScript 6概览【转】

2013-06-13 14:44 by sniper007, 149 阅读, 收藏, 编辑
摘要:http://bbs.9ria.com/thread-204523-1-1.html 阅读全文

【javascript基础】 JS中编码解码escape、encodeURI、encodeURIComponent区别详解【转】

2013-06-07 17:59 by sniper007, 345 阅读, 收藏, 编辑
摘要:JavaScript中有三对字符串编码和解码的函数:对字符串编码的函数:escape,encodeURI,encodeURIComponent对应字符串解码函数:unescape,decodeURI,decodeURIComponent1escape()函数定义和用法escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的string的副本。其中某些字符被替换成了十六进制的转义序列。说明该方法不会对ASCII字母和数字进行编码,也不会对下面这些ASCII标点符号进行编码:*@ 阅读全文

【javascript基础】各浏览器中for in顺序的差异

2013-05-31 17:59 by sniper007, 369 阅读, 收藏, 编辑
摘要:标准参考根据 ECMA-262(ECMAScript)第三版中描述,for-in 语句的属性遍历的顺序是由对象定义时属性的书写顺序决定的。关于 ECMA-262(ECMAScript)第三版中 for-in 语句的更多信息,请参考 ECMA-262 3rd Edition 中 12.6.4 The for-in Statement。在现有最新的 ECMA-262(ECMAScript)第五版规范中,对 for-in 语句的遍历机制又做了调整,属性遍历的顺序是没有被规定的。关于 ECMA-262(ECMAScript)第五版中 for-in 语句的更多信息,请参考 ECMA-262 5rd Ed 阅读全文

【javascript基础】insertAdjacentHTML和insertAdjacentText方法

2013-05-07 18:21 by sniper007, 205 阅读, 收藏, 编辑
摘要:IE的DHTML对象提供了四个可读写的属性来动态操作页面元素的内容:innerText, outerText, innerHTML, outerHTML. 需注意两点: 1. 其中innerText,outerText属性的值是作为普通文本呈现的,即使它含有HTML标签也如实反应出来;而innerHTML, outerHTML呈现的是经HTML引擎解析后文本,它可以反应属性中HTML标签的表现效果。 2. 对对象的outerText,outerHTML属性赋值(即写操作)会删除该对象。 以上四个属性的赋值操作只是替换原对象的文本内容,想要在页面中指定元素相关位置新增文本内容,需采用in... 阅读全文

SeaJS 里版本号和时间戳管理的最佳实践

2013-03-22 14:45 by sniper007, 676 阅读, 收藏, 编辑
摘要:用 seajs 组织项目,上线后,经常需要更新特定文件或所有文件的时间戳,以清空浏览器缓存。最简单的方式是:123define(function(require, exports) {var a = require('path/to/a.js?20110801');});这种方式很简单直观,弊端也很明显:文件一多,时间戳会分散在各个文件,维护起来不方便。第二种方式是利用 alias:12345678seajs.config({alias: {'jquery': 'jquery/1.6.2/jquery','backbone': & 阅读全文