分类目录归档:Javascript

windows下npm无法安装任何包的完美解决办法

最近刚刚安装了node,在试用npm安装包的时候一直报:“npm ERR! code ECONNRESET”,怎么都不行,最后找到了一个简单的解决方法。找到node的安装目录下的node_modules\npm文件夹里找到文件npmrc,增加如下一下: registry = http://registry.cnpmjs.org 完美解决,注:由于最新版的node已经安装了npm模块,安装完node后并不需要单独安装npm模块了。

发表在 Javascript | 评论关闭

eval转化JSON字符串时经常遇到的问题?

由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号: var jsonObject = eval(“(” + jsonFormat + “)”); 加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。 在使用eval处理json字符串的时候注意事项: 1,使用eval解析json字符串的时候加上括号,以免出现不可预知的错误。 2,json格式的名字部分最好加上引号{“key”:”value”}而不要写成{key:”value”},虽然在javascript里这两种写法都没有问题,一旦这个json字符串是通过服务器程序返回的,并且要通过eval进行转换,名字不带引号容易出问题。所以写json字符串的时候只用第一种写法即可。 3,后台程序返回的json字符串为数组形式的,例如:[{"key1":"values1"},{"key2":"value2"}],eval进行转换的时候不需要加括号。

发表在 Javascript | 标签为 , | 评论关闭

javascript加密解密

有时我们辛辛苦苦写好的一段javascript脚本,被别人任意修改,传播,使用,心里很不爽,虽然javascrip加密解密的工具很多,我们可以使用packer轻松的对javascript进行加密,加密方法,进入线上网址:http://dean.edwards.name/packer/ 将要加密的javascript脚本粘贴到Paste:框里,勾选Base62 encode复选框,点击Pack按钮,即可在copy框里看到加密后的javascript脚本,把这段脚本替换之前的脚本即可,替换之前最好将源脚本备份,方便今后自己修改。 有时当我们看到一段好的javascript脚本,想知道如何实现的,如何对其进行解密呢? 例如下方这段脚本: eval( function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!”.replace(/^/,String)){while(c–)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return’\\w+’};c=1};while(c–)if(k[c])p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c]);return p}(’1 7(){2.3=\’4=5,6; 0-8=9 ; a=/\’;b.c.d(e)}’,15,15,’max|function|document|cookie|YJS                           |c9d35860bf5eb98f6f48c942a15fa7d7|MTQxNzY4NjI5NQ==              |challenge|age|21600              |path|window|location|reload|true’.split(‘|’),0,{})) 解密的方法也很简单,我们只需要将eval换成document.write即可,不需要加引号,输出的就是我们想要的的脚本。最多需要再使用decode进行一次解密。

发表在 Javascript | 评论关闭

深入认识javascript中的eval函数

eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下: var code1=’”a” + 2′;    //表达式 var code2=”{name:’xiaoren’,age:25}”;      //语句 alert(eval(code1));     //->’a2′ //alert(eval(code2));     //->undefined alert(eval(‘(‘ + code2 + ‘)’));    //->[object Object] var josn=eval(‘(‘+code2+’)');     //将字符串转换为JSON对象。 alert(“名字:”+josn.name+” 年龄:”+josn.age);  //->名字:xiaoren 年龄:25 可以看到,对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。

发表在 Javascript | 评论关闭