javascript 语法和优化

来源:互联网 发布:mac遨游插件 编辑:程序博客网 时间:2024/05/16 17:27

语法:
关键字:
break      delete  function return   typeof
case        do       if             switch  var
catch       else     in            this      void
continue  false  instanceof  throw  while
debugger finally new     true    with
default      for      null      try

全局变量和函数

arguments        encodeURI                       Infinity    Number                   RegExp
Array                encodeUIRComponent     isFinite   Object                      String
Boolean           Error                                   isNaN    parseFloat                SynataxError
Date                 eval                                    JSON    parseInt                      TypeError
decodeURI       EvalError                            Math     RangeError                 undefined
decodeURIComponent                               Function    NaN                       ReferenceError     URIError



jquery:
事件 
     
blur             focus in       mousedown        mouseup
          change        focusout     mounter              resize
          click             keydown     mouse leave        scroll
          dbclick          keypress     mousemove       select
          error              keyup          mouse out         submit
          focus               load          mouseover          unload

异步
        方法(getScript getJSON  get post)
        常用(type url  data(text xml  sciprt json jsonp)  dataType contentType  timeout  cache  ifModified  global)
        回调(context beforeSend  success error complete)| success not modified error timout parseerror
        钩子  (async dataFilter  jsonp  jsonpCallback  processData  scriptCharset  tranditional )


选择
简单选择器(基本 层次 过滤)
组合选择器(A B  A>B  A+B  A~B) 
选择器组


detail:
key=val(array 、function、 regexp | events、documents、e、css、cookie、http)
表达式(变量=值)类型  
加载顺序和安全


======================================================================
类型:数字  文本 布尔值 null/undefined  全局对象  | 类型转换
值:不可变的原始值 和 可变的对象引用
变量:作用域,局部加var
表达式:原始表达式 函数表达式 属性表达式  对象表达式
运算符:算数表达式 关系表达式(== ===) 逻辑表达式 赋值表达式 表达式计算(eval) 
数组:curd length traverse multi | join reverse  sort  concat  slice  splice push pop shift unshift toString
函数:调用 传参 方法 闭包(作用域 链条 共享私有变量 动态)
正则:RegExp(exec  match  test)

javascript执行顺序,加载和异步事件;安全问题,是由于不严格的同源策略造成的XSS攻击
windows 对象,计时器 定位导航 历史 屏幕信息 对话框 错误处理 文档元素 窗口 
文档元素:tree curd  遍历 表单
css:盒模型position top left bottom right width height z-index  display  visibility  clip  overflow margin border
padding  background  opacity
事件:事件类型(标 键盘 表单 窗口) 事件目标  事件处理程序  事件对象  事件传播  事件捕获
存储:cookie session local storage | H5:历史 跨域 webWorder
http:ajax(jsonp)




一、优化:缓存变量,ID优先,给出上下文尽可能精确

二、加载:head vs body   | 外部vs嵌入  

--底部,不会阻塞资源下载。

--头部,把嵌入JS放在CSS头部,否则css会在嵌入的JS执行前先加载导致阻塞js

--嵌入,嵌入js运行时间过长,可以用setTimeout延迟加载,setinterval是循环运行的)


三、语法:  假值  闭包 动态对象  字面量  json+eval


假值:false null  空字符串 0 NaN


闭包就是函数用到外部变量,不需要传参就可以获取。

var sMessage = "Hello world";    

function sayHello(){    

     alert(sMessage);    

}    


一个obj对象动态添加属性,

var arr=[];

arr['js']='jquery';

arr['css']='oocss';

var obj={};

for(var i in arr)

{

    obj[i]=arr[i];

}

alert(obj.js);


--对象字面量

var box = {

 name:’abc’,

 age:28,

 run:function(){

 return ‘123’;

}

}

alert(box.run());


--函数字面量

function AA(obj){

 alert(obj.name);

 alert(obj.age);

}

var obj = { name: 'abc', age: 28}

AA(obj);


--数组字面量

var a = new Array("itsy", "bitsy", "spider");  // the exact same array  

var a = ["itsy", "bitsy", "spider"];  

console.log(typeof a); // "object", because arrays are objects  

console.log(a.constructor === Array); // true  


json + eval

Json—

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'

var contact = JSON.parse(jsontext); 

document.write(contact.surname + ", " + contact.firstname); 

// Output: Aaberg, Jesper

json—1:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常


eval— 对象字面量 vs JSON 对象

var code2='{a:2}'; //函数字面量

alert(eval('(' + code2 + ')')); //->[object Object] //json—2加个括号它就是对象


json—3 eval

var jsonFormat = '{  "summary": "Blogs",}'; //jsno 对象

var jsonObject = eval('(' + jsonFormat + ')');

alert(jsonObject.summary);


()javascript 方法 array obj string number regexp  $.ajax console  $.fn jsonp  

array.concat|join|pop|push|reverse|shift|slice|sort|splice|unshift 

number.toExponential|toFixed|toPrecision|toString

Object.hasOwnProperty


String

--匹配

string.localeCompare(that)

string.match(regexp)

string.replace(searchValue,replaceValue)

string.search(regexp)

--定位

string.indexOf(searchString,position)

string.lastIndexOf(searchString,position)

string.charAt(pos)

--合并分割

string.concat(string)

string.slice(start,end)

string.split

string.substring

--大小写

string.toLowerCase()

string.toUpperCase()



regexp.exec(string) |  test(string)


console.info|debug|warn|error|log


(六)$.ajax

1url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。

2type: 要求为String类型的参数,请求方式(postget)默认为get

3timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。

4async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。同步请求,设为false

5cache:要求为Boolean类型的参数,默认为true(当dataTypescript时,默认为false)。

6data: 要求为ObjectString类型的参数,发送到服务器的数据。

7dataType: 要求为String类型的参数,xml html script json jsonp text

8beforeSend:发送请求前可以修改XMLHttpRequest对象的函数,

9complete:请求完成后调用的回调函数(请求成功或失败时均调用)。

10success:要求为Function类型的参数,请求成功后调用的回调函数

11error:要求为Function类型的参数,请求失败时被调用的函数。

12contentType:要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"

13dataFilter:要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。

14global:要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStartajaxStop可用于控制各种ajax事件。

15ifModified:要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。

16jsonp:要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GETPOST请求中URL参数里的"callback"部分,例如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

$(function(){

    $('#send').click(function(){

         $.ajax({

             type: "GET",

             url: "test.json",

             data: {username:$("#username").val(), content:$("#content").val()},

             dataType: "json",

             success: function(data){

                         $('#resText').empty();   //清空resText里面的所有内容

                         var html = '';

                         $.each(data, function(commentIndex, comment){

                               html += '<div class="comment"><h6>' + comment['username']

                                         + ':</h6><p class="para"' + comment['content']

                                         + '</p></div>';

                         });

                         $('#resText').html(html);

                      }

         });

    });

});


其他:

封装jquery插件

js 跨脚本小结:1json数据格式 2js跨脚本执行特性 3jsonjsonp的分别 4$.getJSON vs $.ajax 5、数据安全与优化搜索等


优化


jquery 效率优化
 1.总是从ID选择器开始继承

 

以下是引用片段:
<div id="content">
 <form method="post" action="#">
 <h2>交通信号灯</h2>
 <ul id="traffic_light">
 <li><input type="radio" class="on" name="light" value="red" /> 红色</li>
 <li><input type="radio" class="off" name="light" value="yellow" /> 黄色</li>
 <li><input type="radio" class="off" name="light" value="green" /> 绿色</li> 
</ul> <input class="button" id="traffic_button" type="submit" value="Go" />
 </form>
 </div> 

  如果采用下面的选择器,那么效率是低效的。

 

以下是引用片段:
var traffic_button = $("#content .button");  

  因为button已经有ID了,我们可以直接使用ID选择器。如下所示:

 

以下是引用片段:
var traffic_button = $("#traffic_button");

  当然 这只是对于单一的元素来讲。如果你需要选择多个元素,这必然会涉及到 DOM遍历和循环,为了提高性能,建议从最近的ID开始继承。如下所示:

 

以下是引用片段:
var traffic_lights = $("#traffic_light input");

  2.在class前使用tag(标签名)

  在jQuery中第二快的选择器是tag(标签)选择器( 比如:$("head") )。跟ID选择器累时,因为它来自原生的getElementsByTagName()方法。继续看刚才那段HTML代码:

 

以下是引用片段:
<div id="content">
 <form method="post" action="#"> <h2>交通信号灯</h2>
 <ul id="traffic_light">
 <li><input type="radio" class="on" name="light" value="red" /> 红色</li>
 <li><input type="radio" class="off" name="light" value="yellow" /> 黄色</li>
 <li><input type="radio" class="off" name="light" value="green" /> 绿色</li>
 </ul> 
<input class="button" id="traffic_button" type="submit" value="Go" />
 </form> 
</div> 

  比如需要选择红绿单选框,那么可以使用一个tag name来限制(修饰)class ,如下所示:

 

以下是引用片段:
var active_light = $("input.on"); 

  当然也可以结合 就近的ID,如下所示:

 

以下是引用片段:
var active_light = $("#traffic_light input.on"); 

  在使用tag来修饰class的时候,我们需要注意以下几点:

  (1)不要使用tag来修饰ID,如下所示:

 

以下是引用片段:
var content = $("div#content");  

  这样一来,选择器会先遍历所有的div元素,然后匹配#content。

  (2)不要画蛇添足的使用ID来修饰ID,如下所示:

 

以下是引用片段:
var traffic_light = $("#content #traffic_light"); 

  3.将jQuery对象缓存起来

  把jQuery对象缓存起来就是要告诉我们 要养成将jQuery对象缓存进变量的习惯。下面是一个jQuery新手写的一段代码:

 

以下是引用片段:
$("#traffic_light input.on").bind("click", function(){ ... });
  $("#traffic_light input.on").css("border", "1px dashed yellow");
  $("#traffic_light input.on").css("background-color", "orange");
 $("#traffic_light input.on").fadeIn("slow"); 

  但切记不要这么做。我们应该先将对象缓存进一个变量然后再操作,如下所示:

 

以下是引用片段:
var $active_light = $("#traffic_light input.on");
  $active_light.bind("click", function(){ ... });
  $active_light.css("border", "1px dashed yellow"); 
 $active_light.css("background-color", "orange");
  $active_light.fadeIn("slow"); 

  记住,永远不要让相同的选择器在你的代码里出现多次:

  (1)为了区分普通的JavaScript对象和jQuery对象,可以在变量首字母前加上$符号。

  (2)上面代码可以使用jQuery的链式操作加以改善。如下所示:

 

以下是引用片段:
var $active_light = $("#traffic_light input.on");
  $active_light.bind("click", function(){ ... })
                      .css("border", "1px dashed yellow")
                      .css("background-color", "orange") 
                     .fadeIn("slow");

  如果你打算在其他函数中使用jQuery对象,那么你必须把它们缓存到全局环境中。如下代码所示:

 

以下是引用片段:
  // 在全局范围定义一个对象 (例如: window对象)
  window.$my = {  head : $("head"),  traffic_light : $("#traffic_light"),  traffic_button : $("#traffic_button")  };  function do_something(){  
// 现在你可以引用存储的结果并操作它们
  var script = document.createElement("script");
  $my.head.append(script);  
// 当你在函数内部操作是, 可以继续将查询存入全局对象中去.  $my.cool_results = $("#some_ul li");  
$my.other_results = $("#some_table td");
  // 将全局函数作为一个普通的jquery对象去使用.  $my.other_results.css("border-color", "red");  
$my.traffic_light.css("border-color", "green");  }  
//你也可以在其他函数中 使用它

4.对直接的DOM操作进行限制

  这里的基本思想是在内存中建立你确实想要的东西,然后更新DOM。这并不是一个jQuery最佳实践,但必须进行有效的JavaScript操作 。直接的DOM操作速度很慢。例如,你想动态的创建一组列表元素,千万不要这样做,如下所示:

 

以下是引用片段:
var top_100_list = [...],
 // 假设这里是100个独一无二的字符串  $mylist = $("#mylist");
 // jQuery 选 择到 <ul> 元素  for (var i=0, l=top_100_list.length; i<l; i++) {    $mylist.append("<li>" + top_100_list[i] + "</li>");  } 

  我们应该将整套元素字符串在插入进dom中之前先全部创建好,如下所示:

 

以下是引用片段:
var top_100_list = [...],$mylist = $("#mylist"), top_100_li = "";
   // 这个变量将用来存储我们的列表元素
  for (var i=0, l=top_100_list.length; i<l; i++){     top_100_li += "<li>" + top_100_list[i] + "</li>";  }
  $mylist.html(top_100_li); 

  注:记得以前还看过一朋友写过这样的代码:

 

以下是引用片段:
for (i = 0; i < 1000; i++) { 
       var $myList = $('#myList');
        $myList.append('This is list item ' + i);
   }  

  你应该已经看出问题所在了。

  5.冒泡

   除非在特殊情况下, 否则每一个js事件(例如:click, mouseover等。)都会冒泡到父级节点。当我们需要给多个元素调用同个函数时这点会很有用。代替这种效率很差的多元素事件监听的方法就是,你只需向 它们的父节点绑定一次。 比如,我们要为一个拥有很多输入框的表单绑定这样的行为:当输入框被选中时为它添加一个class传统的做法是,直接选中input,然后绑定focus 等,如下所示:

 

以下是引用片段:
$("#entryform input").bind("focus", function(){
      $(this).addClass("selected");  }).bind("blur", function(){ 
     $(this).removeClass("selected");
  }); 

  当然上面代码能帮我们完成相应的任务,但如果你要寻求更高效的方法,请使用如下代码:

 

以下是引用片段:
$("#entryform").bind("focus", function(e){ 
     var $cell = $(e.target);
 // e.target 捕捉到触发的目标元素
      $cell.addClass("selected"); 
 }).bind("blur", function(e){  
    var $cell = $(e.target);      $cell.removeClass("selected");  }); 

   通过在父级监听获取焦点和失去焦点的事件,对目标元素进行操作。在上面代码中,父级元素扮演了一个调度员的角色,它可以基于目标元素绑定事件。如果你发 现你给很多元素绑定了同一个事件监听,那么现在的你肯定知道哪里做错了。同理,在Table操作时,我们也可以使用这种方式加以改进代码:普通的方式:

 

以下是引用片段:
$('#myTable td').click(function(){ 
     $(this).css('background', 'red');  });

  改进方式:  

 

以下是引用片段:
$('#myTable').click(function(e) {
   var $clicked = $(e.target);
   $clicked.css('background', 'red');   });

  假设有100个td,在使用普通的方式的时候,你绑定了100个事件。在改进方式中,你只为一个元素绑定了1个事件,至于是100个事件的效率高,还是1个事件的效率高,相信你也能自行分辨了。

  6.推迟到 $(window).load

   jQuery对于开发者来说有一个很诱人的东西,可以把任何东西挂到$(document).ready下。尽管$(document).rady 确实很有用, 它可以在页面渲染时,其它元素还没下载完成就执行。如果你发现你的页面一直是载入中的状态,很有可能就是$(document).ready函数引起的。 你可以通过将jQuery函数绑定到$(window).load 事件的方法来减少页面载入时的cpu使用率。它会在所有的html(包括<iframe>)被下载完成后执行。

 

以下是引用片段:
$(window).load(function(){ 
     // 页面完全载入后才初始化的jQuery函数.
  }); 

  一些特效的功能,例如拖放,视觉特效和动画,预载入隐藏图像等等,都是适合这种技术的场合。

  7.压缩JavaScript

  压缩和最小化你的JavaScript文件。压缩之前,请保证你的代码的规范性,否则可能失败,导致Js错误。

  8.尽量使用ID代替Class

  前面性能优化已经说过,ID选择器的速度是最快的。所以在HTML代码中,能使用ID的尽量使用ID来代替class。看下面的一个例子:

 

以下是引用片段:
// 创建一个list  var $myList = $('#myList');
  var myListItems = '<ul>'; 
 for (i = 0; i < 1000; i++) { 
      myListItems += '<li class="listItem' + i + '">This is a list item</li>'; 
//这里使用的是class
   }  myListItems += '</ul>'; 
 $myList.html(myListItems); 
 // 选择每一个 li   for (i = 0; i < 1000; i++) { 
     var selectedItem = $('.listItem' + i);  } 

  在代码最后,选择每个li的过程中,总共用了5066毫秒,超过5秒了。接着我们做一个对比,用ID代替class:

 

以下是引用片段:
// 创建一个list  var $myList = $('#myList'); 
 var myListItems = '<ul>'; 
 for (i = 0; i < 1000; i++) {      myListItems += '<li id="listItem' + i + '">This is a list item</li>';
 //这里使用的是id  }  
myListItems += '</ul>'; 
 $myList.html(myListItems);  
 // 选择每一个 li  for (i = 0; i < 1000; i++) { 
      var selectedItem = $('#listItem' + i); 
 } 

  在上段代码中,选择每个li总共只用了61毫秒,相比class的方式,将近快了100倍。

  9.给选择器一个上下文

  jQuery选择器中有一个这样的选择器,它能指定上下文。

  jQuery( expression, context );  通过它,能缩小选择器在DOM中搜索的范围,达到节省时间,提高效率。

  普通方式:

 

以下是引用片段:
$('.myDiv')  

  改进方式:

 

以下是引用片段:
$('.myDiv' , $("#listItem") ) 

  10.慎用 .live()方法(应该说尽量不要使用)

  这是jQuery1.3.1版本之后增加的方法,这个方法的功能就是为 新增的DOM元素 动态绑定事件。但对于效率来说,这个方法比较占用资源。所以请尽量不要使用它。例如有这么一段代码:

 

以下是引用片段:
<script type="text/javascript" >
 $(function(){   $("p").click(function(){ 
      alert( $(this).text() );   }); 
 $("button").click(function(){
      $("<p>this is second p</p>").appendTo("body");  });
  }) </script> <body> <p>this is first p</p>
 <button>add</button> </body> 

  运行后,你会发现新增的p元素,并没用被绑定click事件。你可以改成.live("click")方式解决此问题,代码如下:

 

以下是引用片段:
$(function(){  $("p").live("click",function(){
 //改成live方式
       alert( $(this).text() );   });
  $("button").click(function(){ $("<p>this is second p</p>").appendTo("body"); });})

  但我并不建议大家这么做,我想用另一种方式去解决这个问题,代码如下:

 

以下是引用片段:
$(function(){  $("p").click(function(){
      alert( $(this).text() );  });
  $("button").click(function(){
      $("<p>this is second p</p>").click(function(){
  //为新增的元素重新绑定一次  
            alert( $(this).text() ); 
     }).appendTo("body");  });  }) 

  虽然我把绑定事件重新写了一次,代码多了点,但这种方式的效率明显高于live()方式,特别是在频繁的DOM操作中,这点非常明显。

  11.子选择器和后代选择器

  后代选择器经常用到,比如:$("#list  p");后代选择器获取的是元素内部所有元素。而有时候实际只要获取子元素,那么就不应该使用后代选择器。应该使用子选择器,代码如下:

 

以下是引用片段:
$("#list > p");  

  12.使用data()方法存储临时变量

  下面是一段非常简单的代码:

 

以下是引用片段:
$(function(){ 
      var flag = false; 
      $("button").click(function(){
           if(flag){ 
              $("p").text("true");
               flag=false; 
          }else{ 
              $("p").text("false"); 
              flag=true; 
          }       });   }) 

  改用data()方式后,代码如下:

 

以下是引用片段:
$(function(){ 
      $("button").click(function(){
           if( $("p").data("flag") ){  
             $("p").text("true");   
            $("p").data("flag",false); 
          }else{ 
               $("p").text("false"); 
               $("p").data("flag",true);
           }  
     }); 

  })




firebug调试函数

详细参见:http://blog.csdn.net/iamduoluo/article/details/7858292

函数

说明console.log(object[, object, ...])

向控制台输出一个信息。可以输入多个参数,输出将已空格分隔各参数输出。

第一参数可以包含格式化文本,例如:

console.log(‘这里有%d个%s',count,apple);

字符串格式:

%s :字符串。

%d, %i:数字。

%f: 浮点数。

%o -超链接对象。

console.debug(object[, object, ...])

向控制台输出一个信息,信息包含一个超链接链接到输出位置。

console.info(object[, object, ...])

向控制台输出一个带信息图标和背景颜色的信息,信息包含一个超链接链接到输出位置。

console.warn(object[, object, ...])

向控制台输出一个带警告图标和背景颜色的信息,信息包含一个超链接链接到输出位置。

console.error(object[, object, ...])

向控制台输出一个带错误图标和背景颜色的信息,信息包含一个超链接链接到输出位置。

console.assert(expression[, object, ...])

测试一个表示是否为true,如果为false,提交一个例外信息到控制台。

console.dir(object)

列出对象的所有属性。

console.dirxml(node)

列出HTML或XML Element的XML源树。

console.trace()

输出堆栈的调用入口。

console.group(object[, object, ...])

将信息分组再输出到控制台。通过console.groupEnd()结束分组。

console.groupEnd()

结束分组输出。

console.time(name)

创建一个名称为name的计时器,计算代码的执行时间,调用console.timeEnd(name)停止计时器并输出执行时间。

console.timeEnd(name)

停止名称为name的计时器并输出执行时间。

console.profile([title])

开始对脚本进行性能测试,title为测试标题。

console.profileEnd()

结束性能测试。

console.count([title])

计算代码的执行次数。titile作为输出标题。




javascript 优秀特性

good:闭包 动态对象  对象字面量和数组字面量

其实javascript里的闭包概念很简单,就是函数用到外部变量,不需要传参就可以获取。

http://www.cnblogs.com/dewin/archive/2010/06/17/1759477.html

举个例子: var sMessage = "Hello world";    

function sayHello(){    
     alert(sMessage);    
}    
   

 

我为一个obj对象动态添加属性
http://bbs.csdn.net/topics/350091496
var arr=[];
arr['js']='jquery';
arr['css']='oocss';
var obj={};
for(var i in arr)
{
    obj[i]=arr[i];
}
alert(obj.js);




bad:全局变量 作用域 自动插入分好 保留字  typeof parseint   浮点数  NaN  伪数组  假值  hasownproperty  对象(+=)

no: == with eval  continue  switch  缺少块  ++ --  function语句 or 表达式 new 

use:json  eval =>json.parse


eg: json.parse
以下示例使用 JSON.parse 将 JSON 字符串转换成对象。

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; var contact = JSON.parse(jsontext); 

document.write(contact.surname + ", " + contact.firstname);  // Output: Aaberg, Jesper

以下示例演示了如何使用 JSON.stringify 将数组转换成 JSON 字符串,然后使用 JSON.parse 将该字符串重新转换成数组。

var arr = ["a", "b", "c"]; var str = JSON.stringify(arr); document.write(str); document.write ("<br/>");  var newArr = JSON.parse(str);  while (newArr.length > 0) {     document.write(newArr.pop() + "<br/>"); }   // 

Output: // ["a","b","c"] // c // b // a

parse用于从一个字符串中解析出json对象,如
var str = '{"name":"huangxiaojian","age":"23"}'
结果:
JSON.parse(str)

Object
age: "23"
name: "huangxiaojian"
__proto__: Object
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常

eg:eval
<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
输出:
200
4
27
处理json数据
1、eval
根据不同的json格式,一般有两种方式
json为json数据
转化json数据,使用方法统一
var dataObj = eval("("+json+")");
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行
将json数据转换为json对象
(1)含有“节点”的json数据
var json = {
  root:
  [
  {name:'1',value:'0'},
  {name:'2',value:'1'},
{name:'3',value:'2'},
  ]
  }";
如果获取对应的name和value的值,可以使用
$(dataObj.root).each(function(i,item){
var str = "name:"+item.name+",value:"+item.value;
})
(2)不含有“节点”的json数据
var json = {"name":"1","name":"2","name":"3"}
使用$(dataObj).each(function(i,item){
var str = "name:"+item.name+",value:"+item.value;
})获取对应的数据
注意:eval使用比较危险,能不用最好就不要用,以免徒增不必要的麻烦


javascript 字面量

对象字面量

var box = { 
 name:’abc’, 
 age:28, 
 run:function(){ 
 return ‘123’; 

alert(box.run());


function AA(obj){ 
 alert(obj.name); 
 alert(obj.age); 
var obj = { name: 'abc', age: 28} 

AA(obj);

数组字面量

var a = new Array("itsy", "bitsy", "spider");  // the exact same array  

var a = ["itsy", "bitsy", "spider"];  

console.log(typeof a); // "object", because arrays are objects  

console.log(a.constructor === Array); // true  


javascript 方法
Array

array.concat
array.join
array.pop //最后弹出
array.push //最后压入
array.reverse
array.shift //首位弹出
array.slice
array.sort
array.splice
array.unshift //首位压入  

Number

number.toExponential
number.toFixed
number.toPrecision
number.toString

Object.hasOwnProperty

String
string.charAt(pos)
string.charCodeAt(pos)
string.concat(string)
string.indexOf(searchString,position)
string.lastIndexOf(searchString,position)
string.localeCompare(that)
string.match(regexp)
string.replace(searchValue,replaceValue)
string.search(regexp)
string.slice(start,end)
string.split
string.substring
string.toLocaleLowerCase()
string.toLocaleUpperCase()
string.toLowerCase()
string.toUpperCase()
string.fromCharCode(char...)

Regexp
regexp.exec(string)
regexp.test(string)



0 0
原创粉丝点击