Below you will find pages that utilize the taxonomy term “Javascript”
February 15, 2016
JavaScript垃圾回收机制
"\u003cp\u003e\u003cstrong\u003e一、垃圾回收的必要性\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e下面这段话引自《JavaScript权威指南(第四版)》\u003c/p\u003e\n\u003cp\u003e_ 由于字符串、对象和数组没有固定大小,所有当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分配内存来存储那个实体。只要像这样动态地分配了内存,最终都要释放这些内存以便他们能够被再用,否则,JavaScript的解释器将会消耗完系统中所有可用的内存,造成系统崩溃。_\u003c/p\u003e\n\u003cp\u003e这段话解释了为什么需要系统需要垃圾回收,JS不像C/C++,他有自己的一套垃圾回收机制(Garbage Collection)。JavaScript的解释器可以检测到何时程序不再使用一个对象了,当他确定了一个对象是无用的时候,他就知道不再需要这个对象,可以把它所占用的内存释放掉了。例如:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003evar a = \u0026#34;before\u0026#34;;\nvar b = \u0026#34;override a\u0026#34;;\nvar a = b; //重写a\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这段代码运行之后,“before”这个字符串失去了引用(之前是被a引用),系统检测到这个事实之后,就会释放该字符串的存储空间以便这些空间可以被再利 …\u003c/p\u003e"
November 23, 2010
js里面如何获取网络地址的图片的高度和宽度 (变通办法)
"\u003cp\u003e原图片是 :\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e(function(){\nvar img=document.createElement(‘img’);//创建一个img元素\nimg.src=”http://gg.blueidea.com/2008/blueidea/flash2008.gif”;//指定src\nimg.style.position=”absolute”;//防止正常的内容变形\nimg.style.visibility=’hidden’;//藏起来\nvar inj=document.getElementById(‘box’).appendChild(img);//插入到box中。当然插入到document.body也可以\nalert(‘宽:’+inj.offsetWidth);//然后就可以通过 offset 取得宽和高了\nalert(‘高:’+inj.offsetHeight);\n})();\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e简单地说就是把图片放入一个自动伸缩的DIV中,然后获取DIV的宽和高!\u003c/p\u003e"
April 24, 2010
JS内存释放问题
"\u003cp\u003e一个内存释放的实例\u003c/p\u003e\n\u003cp\u003eCollectGarbage, 是IE的一个特有属性,用于释放内存的使用方法嘛应该是,将该变量或引用对象,设置为null或delete然后在进行释放动作\n在 做CollectGarbage前,要必需清楚的两个必备条件:\u003c/p\u003e\n\u003cp\u003e引用\u003c/p\u003e\n\u003cp\u003e– 一个对象在其生存的上下文环境之外,即会失效。\u003c/p\u003e\n\u003cp\u003e– 一个全局的对象在没有被执用(引用)的情况下,即会失效。\u003c/p\u003e\n\u003cp\u003e========= 美丽的分割线 =========\u003c/p\u003e\n\u003cp\u003e//———————————————————\n// JavaScript对象何时失效\n//———————————————————\nfunction testObject() {\nvar _obj1 = new Object();\n}\u003c/p\u003e\n\u003cp\u003efunction testObject2() {\nvar _obj2 = new Object();\nreturn _obj2;\n}\u003c/p\u003e\n\u003cp\u003e// 示例1\ntestObject();\u003c/p\u003e\n\u003cp\u003e// 示例2\ntestObject2()\u003c/p\u003e\n\u003cp\u003e// 示例3\nvar obj3 = testObject2();\nobj3 = null;\u003c/p\u003e\n\u003cp\u003e// 示例4\nvar obj4 = …\u003c/p\u003e"
April 23, 2010
js过滤word格式
"\u003cp\u003efunction cleanAndPaste(html) …{\n// Remove all SPAN tags\nhtml = html.replace(/]\u003cem\u003e\u0026gt;/gi, “” );\n// Remove Class attributes\nhtml = html.replace(/\u0026lt;(w[^\u0026gt;]*) class=([^ |\u0026gt;]*)([^\u0026gt;]\u003c/em\u003e)/gi, “\u0026lt;$1$3″) ;\n// Remove Style attributes\nhtml = html.replace(/\u0026lt;(w[^\u0026gt;]*) style=”([^”]*)”([^\u0026gt;]\u003cem\u003e)/gi, “\u0026lt;$1$3”) ;\n// Remove Lang attributes\nhtml = html.replace(/\u0026lt;(w[^\u0026gt;]*) lang=([^ |\u0026gt;]*)([^\u0026gt;]\u003c/em\u003e)/gi, “\u0026lt;$1$3”) ;\n// Remove XML elements and declarations\nhtml = html.replace(/\u0026lt;??xml[^\u0026gt;] …\u003c/p\u003e"
May 21, 2009
addEventListener的参数说明
"\u003cp\u003e我想大家对这个函数的前两个参数已经很了解了吧,主要是第三个参数不很好理解。我查了一些资料,弄明白了这个问题,所以记录下来了。下面的内容,基本上是参考别人的。\u003c/p\u003e\n\u003cp\u003e第三个参数叫做useCapture,是一个boolean值,就是true or false,如果是rue的话就是浏览器会使用Capture方式,false的话是Bubbling,只有在特定状况下才会有影响,通常建议是false,而会有影响的情形是目标元素(target element)有父元素(ancestor element),而且也有同样的事件对应函数,我想,看图比较清楚。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/wp-content/uploads/2009/05/f781ff0f5563e6386159f31f.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2009/05/f781ff0f5563e6386159f31f.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e像這張圖所顯示的,我的範例有兩層div元素,而且都設定有click事件,一般來說,如果我在內層藍色的元素上click不只會觸發藍色元素的click事件,還會同時觸發紅色元素的click事件,而useCapture這個參數就是在控制這時候兩個click事件的先後順序。如果是false,那就會使用bubbling,他是從內而外的流程,所以會先執行藍色元素的click事件再執行紅色元素的click事件,如果是true,那就是capture,和bubbling相 …\u003c/p\u003e"
May 21, 2009
attachEvent与addEventListener区别
"\u003cp\u003e适应的浏览器版本不同,同时在使用的过程中要注意\nattachEvent方法 按钮onclick\naddEventListener方法 按钮click\u003c/p\u003e\n\u003cp\u003e有关addEventListener函数的相关参数 \u003ca href=\"/index.php/archives/1429\"\u003e请点击这里查看\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e两者使用的原理:可对执行的优先级不一样,下面实例讲解如下:\nattachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)\u003c/p\u003e\n\u003cp\u003eaddEventListener方法 用于 Mozilla系列\u003c/p\u003e\n\u003cp\u003e举例: document.getElementById(“btn”).onclick = method1;\ndocument.getElementById(“btn”).onclick = method2;\ndocument.getElementById(“btn”).onclick = method3;如果这样写,那么将会只有medhot3被执行\u003c/p\u003e\n\u003cp\u003e写成这样:\nvar btn1Obj = document.getElementById(“btn1”); //object.attachEvent(event,function); …\u003c/p\u003e"
November 4, 2008
JavaScript isNaN() 函数
"\u003ch2 id=\"义和用法\"\u003e义和用法\u003c/h2\u003e\n\u003cp\u003eisNaN() 函数用于检查其参数是否是非数字值。\u003c/p\u003e\n\u003ch3 id=\"语法\"\u003e语法\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eisNaN(x)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e参数\u003c/p\u003e\n\u003cp\u003e描述\u003c/p\u003e\n\u003cp\u003ex\u003c/p\u003e\n\u003cp\u003e必需。要检测的值。\u003c/p\u003e\n\u003ch3 id=\"返回值\"\u003e返回值\u003c/h3\u003e\n\u003cp\u003e如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。\u003c/p\u003e\n\u003ch3 id=\"说明\"\u003e说明\u003c/h3\u003e\n\u003cp\u003eisNaN() 函数可用于判断其参数是否是 NaN,该值表示一个非法的数字(比如被 0 除后得到的结果)。\u003c/p\u003e\n\u003cp\u003e如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。正因为如此,isNaN() 函数是必需的。\u003c/p\u003e\n\u003ch2 id=\"提示和注释\"\u003e提示和注释\u003c/h2\u003e\n\u003cp\u003e提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。\u003c/p\u003e\n\u003ch2 id=\"实例\"\u003e实例\u003c/h2\u003e\n\u003cp\u003e在本例中,我们将使用 isFinite() 在检测无穷数:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;script type=\u0026#34;text/javascript\u0026#34;\u0026gt;\n\ndocument.write(isFinite(123)) …\u003c/code\u003e\u003c/pre\u003e"
November 4, 2008
JavaScript push() 方法
"\u003ch2 id=\"定义和用法\"\u003e定义和用法\u003c/h2\u003e\n\u003cp\u003epush() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。\u003c/p\u003e\n\u003ch3 id=\"语法\"\u003e语法\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003earrayObject.push(newelement1,newelement2,....,newelementX)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e参数\u003c/p\u003e\n\u003cp\u003e描述\u003c/p\u003e\n\u003cp\u003enewelement1\u003c/p\u003e\n\u003cp\u003e必需。要添加到数组的第一个元素。\u003c/p\u003e\n\u003cp\u003enewelement2\u003c/p\u003e\n\u003cp\u003e可选。要添加到数组的第二个元素。\u003c/p\u003e\n\u003cp\u003enewelementX\u003c/p\u003e\n\u003cp\u003e可选。可添加多个元素。\u003c/p\u003e\n\u003ch3 id=\"返回值\"\u003e返回值\u003c/h3\u003e\n\u003cp\u003e把指定的值添加到数组后的新长度。\u003c/p\u003e\n\u003ch3 id=\"说明\"\u003e说明\u003c/h3\u003e\n\u003cp\u003epush() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。\u003c/p\u003e\n\u003ch2 id=\"提示和注释\"\u003e提示和注释\u003c/h2\u003e\n\u003cp\u003e注释:该方法会改变数组的长度。\u003c/p\u003e\n\u003cp\u003e提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。\u003c/p\u003e\n\u003ch2 id=\"实例\"\u003e实例\u003c/h2\u003e\n\u003cp\u003e在本例中,我们将创建一个数组,并通过添加一个元素来改变其长度:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;script type=\u0026#34;text/javascript\u0026#34;\u0026gt;\n\nvar arr = new Array(3)\narr[0] = …\u003c/code\u003e\u003c/pre\u003e"
September 27, 2008
js中arguments.length的意思
"\u003cp\u003efunction imagePreload() {\nvar imgPreload = new Image();\nfor (i = 0; i \u0026lt; arguments.length; i++) {\nimgPreload.src = arguments[i];\n}\n}\n\u003cstrong\u003eimagePreload(‘001.gif’, ‘002.gif’, ‘003.gif’, ‘004.gif’, ‘005.gif’)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个是js中的arguments.主要是可以对输入的参数进行跟踪。\n这如作者所举出的例子:imagePreload函数出入了5个参数,所以在js代码中的\narguments.length会知道你输入的了5个参数。并可以通过索引器获得五个参数的值。\u003c/p\u003e"