您的位置:首页 > 编程语言 > Java开发

改善Java Script程序的建议(二)

2016-01-27 16:36 281 查看
1、数组长度的有限性和无限性
     var myArray = [];
     myArray.lenght;     // 0
     myArray[10000] = true;
     myArray.length        // 10001
     根据 ECMAScript 标准,数组的下标必须是大于或等于0且小于2^32 -1 的证书。
     我们可以指定数组的长度,这将导致所有下标大于或等于新 length 的元素被删除。

     


2、建议使用 splice 删除数组
     由于数组其实就是对象,因此使用 delete 运算符可以从数组中移除元素。但是移除下标位置元素后,会在数组中遗留一个空洞。
     例如:
          


     splice 删除元素,如下
          


3、使用 arguments 模拟重载
     


 4、建议使用闭包跨域开发
     


演示步骤说明:
 第一步,程序预编译之后,从第9行开始解析执行,创建上下文环境,创建调用对象,把参数、局部变量、内部的函数转换为对象的属性。
 第二步,执行函数体内代码。在第6行执行局部变量 a 的递加运算,并把这个值传递给对象属性a,内部函数动态保持与局部变量 a 的联系,同时更新自己内部调用变量的值。
 第3步,外部函数把内部函数返回给全局变量c,实现内部函数的定义,此时 c 完全继承了内部函数的所有结构和数据。
 第4步,外部函数返回后(即返回之后调用完毕)会自动销毁,内部的结构、标识符和数据也随之丢失。
 第5步,执行第10行代码命令,调用内部函数,此时返回的是外部函数返回时(销毁之前)保存的变量a 所存储的最新数据值,即返回6。 

function f(){ 
     var a = 1;
     b = function(){ 
          alert(a);
     } 
     c = function(){ 
          a++; 
     } 
     d = function( x ){ 
          a = x; 
     } 
}
f();
b();            // alert(1);
c();b();        // alert(2);
d(100);b();     // alert(100);  
    
5、在循环体和异步回调中慎重使用闭包
6、通过 Function 扩展类型
   


7、原型属性和本地特性之间的关系
     


8、合理使用原型
 本地属性覆盖原型属性
   function p(x){
        this.x = x;  
     }
   p.prototype.x = 1;
   var p1 = new p(10);
   alert(p1.x);            // 本地属性覆盖原型属性
   但是原型属性并没有被删除,它依然存在,仅是被覆盖
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript