随笔分类 - Javascript
摘要:Immediately-invoked Function Expression(IIFE,立即调用函数),简单的理解就是定义完成函数之后立即执行。因此有时候也会被称为“自执行的匿名函数”(self-executing anonymous function)。IIFE的叫法最早见于Ben Alman的...
阅读全文
摘要:本专栏尝试记录并分享一些个人在学习和使用开源程序代码的过程中,经意或者不经意间看到的个人感觉比较有参考价值的代码片段。个人感觉,并不是说能写或者能看得懂一些晦涩难懂的代码段子,就可以成为向别人炫耀的资本。本专栏无意炫技,其实也无技可炫。至于让某些牛人觉得有些小儿科,我只能说,“您老太认真了”。保持元素纵横比解决问题:页面尺寸变化(resize)时保持页面元素纵横比开源程序:Bootstrap经常,我们会遇到这样的需求,需要保持页面上某些元素在页面大小被改变重新渲染的时候,保持该元素区域的纵横比不变。最常见的场景,比如页面上显示图片的时候,希望始终保持图片的纵横比,哪怕图片以缩略图显示。或者,在
阅读全文
摘要:单例模式解决问题:只执行一次的函数开源程序:underscore有时候我们会需要使用单例模式,比如需要一个函数,这个函数在整个应用运行的时候只被访问一次。如果再次访问就会访问上次的执行结果。这个需求的一个经典实现可以在underscore的代码中找到:_.once = function(func) { var ran = false, memo; return function() { if (ran) return memo; ran = true; memo = func.apply(this, arguments); func = nu...
阅读全文
摘要:浏览器特性判断解决问题:判断某事件/方法在当前浏览器中是否支持开源程序:Modernizr众所周知,各个不同的浏览器对于代码渲染的实现也各自为政百花齐放,虽然有W3C在维护着标准,但是由于市面上存在很多浏览器,每个浏览器又有数不尽的历史版本,因此对于浏览器兼容性问题的判断成了在写JS应用中必不可少的技能。以前大家都倾向于做浏览器类型和版本的检测,现在倾向于做浏览器的特性检测,这样更有实际用处。今天要提到的是通过判断事件是否存在来探测浏览器兼容性支持。比如onmousewheel事件,并不是所有的浏览器都会支持,我们可以这样:if(document.onmousewheel){ //这里是...
阅读全文
摘要:function clone(proto) { function Dummy() { } Dummy.prototype = proto; Dummy.prototype.constructor = Dummy; return new Dummy(); //等价于Object.create(Person);} var me = clone(Person);function proto(object) { return !object? null : '__proto__' in object...
阅读全文
摘要:首先看一段代码:// 定义三个全局变量var global_var = 1;global_novar = 2; // 反面教材(function () { global_fromfunc = 3; // 反面教材}());// 试图删除delete global_var; // falsedelete global_novar; // truedelete global_fromfunc; // true// 测试该删除typeof global_var; // "number"typeof global_novar; // "undefined"typ
阅读全文
摘要:function Base(){}Base.prototype = {x:10, y:[]}function A(){}A.prototype = new Base();var a = new A();a.y.push("first");a.x = 9;console.log(a.x);console.log(a.y);function B(){}B.prototype = new Base();var b = new B();b.y.push("second");b.x = 11;console.log(a.x);console.log(a.y);允许
阅读全文
摘要:1. arguments为什么不是数组?如何证明?arguments 是没有数组的slice等方法的,所以不是Array类型的。验证:function testargs(){ var arr=[1,2,3]; console.log(typeof arguments.slice); console.log(typeof arr.slice);}testargs();输出:undefinedfunction当然,还可以通过其他方式来证明,比如说看constructor等等。2. 如何转为数组?使用Array的slice方法,如下:function arg2arr(){ v...
阅读全文
摘要:// 最基础的forEach function forEach(array, action) { for (var i = 0; i < array.length; i++) { action(array[i]); } } // 测试forEach forEach(["Pear", "Apple"], function(name) { console.log(name); }); // ------------------------------------------------ //...
阅读全文
摘要://兼容浏览器的获取指定元素(elem)的样式属性(name)的方法function getStyle(elem, name){ //如果属性存在于style[]中,直接取 if(elem.style[name]){ return elem.style[name]; } //否则 尝试IE的方法 else if(elem.currentStyle){ return elem.currentStyle[name]; } //尝试W3C的方式 else if(document.defaultView && document.defaultView.getCompute...
阅读全文
摘要:很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容。 谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器。在Windows的【开始】-->【运行】中输入以下命令,启动谷歌浏览器,即可模拟相应手机的浏览器去访问3G手机网页: 谷歌Android:chrome.exe --user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Ver
阅读全文
摘要:StopPropagation: function (e) { if ($.browser.msie) { event.cancelBubble = true } else { e.stopPropagation(); e.preventDefault() } }
阅读全文
摘要:参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高。举个例子,比如PHP中的字符串截取函数substr(string,start,length),当不指定length时,函数将默认截取字符串 中start位置到字符串结束,而如果指定了length,则截取从start位置开始的以length为长度的字符串,所以如果调用的是 substr('http://www.hualai.net.cn',11,6),则返回的是hualai;如果省略掉最后一个参 数,substr('http://www.hualai.ne
阅读全文
摘要:在zemanta的blog上看到一篇文章,后边来自Eran Medan的回帖让人惊讶,一起围观一下:I agree, I can't keep up, I just finished learning backbone.js and now I'm found out on that it's old news, and I should use ember.js, cross that, it has opinions, I should use Meteor, no, AngularJS, no, Tower.js (on node.js), and for htm
阅读全文
摘要:这个问题是在工作中碰到的,所以分享出来.公司使用的是jQuery作为前端开发框架.昨天在取后台传过来的数据时候,使用json格式取出的数据变成了字符串.数据条数总共只有8条,然而使用alert(json.length)的时候,却弹出了2185条数据.所以遇到这样的情况,我们需要手动的把字符串转换为js对象,因为此时计算的长度是整个字符串的长度.转换方法有3种:eval() 函数使用 new Funtion()构造函数使用浏览器内置JSON.parse方法(IE Version > IE8(S))来说说使用的建议:eval()函数,很强大的函数,会模拟出一个js解析器,能解析任何js代码,
阅读全文
摘要:直接上代码:document.getElementByClass = function(n) { var el = [], _el = document.getElementsByTagName('*'); for (var i=0; i<_el.length; i++ ) { if (_el[i].className == n ) { el[el.length] = _el[i]; } } ...
阅读全文
摘要:在网上搜了一下,有几种实现思路,还算实用。此文记录备用。1.muyu的方案 $(document).ready(function(){ $('#btn').click(function(){ var jsonStr = $('#jsonData').val(); var json = eval('('+jsonStr+')'); (function(){ var print_r = function(o, depth) { var result = ''; depth || (depth=1); ...
阅读全文
摘要:javascript中将字符串转换为json格式的三种方法:json在我们js的开发过程中经常会用到像在使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成json对象。下面介绍一下将字符串转换为json对象的三种常用的方法:1,最常用的eval方式解析代码如下:function strToJson(str){var json = eval_r('(' + str + ')');return json;}str两边的小括号不要忘记。2,new Function形式如下function strToJson(str){var json
阅读全文
摘要:无需多言,直接上代码,高度超过时自动显示滚动条,不超过高度时隐藏滚动条。<!DOCTYPE html><html><head><meta charset=utf-8 /><title>JS Bin</title><style> article, aside, figure, footer, header, hgroup, menu, nav, section { display: block; }</style></head><body><div id="di
阅读全文
摘要:转换文件大小为人性化可读方式,即显示为“XXXGB”, “XXXMB”的方式。PHP代码如下: function my_formatSize($size){ $size = doubleval($size); $rank =0; $rankchar ='Bytes'; while($size>1024){ $size = $size/1024; $rank++; } if($rank==1){ $rankchar="KB"; ...
阅读全文

浙公网安备 33010602011771号