20160301--Js01

来源:互联网 发布:catia v5软件有多大 编辑:程序博客网 时间:2024/06/06 05:04
<script defer="defer"> --解析顺序 引入js时候-延迟执行 
typeof a  ----显示数据类型

var arr ={}  

arr.push(,,); 往数组后追加元素 返回新数组长度

                arr.pop();不能传值   删除数组最后一个元素  返回移除的元素
               arr.shift();不能传值  删除头部 返回移除元素
              arr.unshift(,,);从头部插入,返回新长度
     arr.splice(起始位置,截取数量,追加的元素)--初始为1
              arr.slice(2,4)  截取位置,左闭右开,不操作数组本身
     arr1.concat(arr2)  合并,不操作数组本身
              arr.join('-');  每个元素之间添加值,不操作数组本身
              arr.sort(); 正序排序--按照字符串(多位比较第一个)

              arr.reverse();直接颠倒


arr.forEach(function(item,inde,array){alert(item);})//只适合遍历一维数组
var arr=[1,2,3,[4,[5,[6]]]];//自己实现Array each方法  遍历多维数组
Array.prototype.each=function(fn){
   try{
//遍历数组的每一项//计数器 记录当前遍历的元素位置
this.i || (this.i=0);
//严谨判断什么时候取走each核心方法
//当数组的长度大于0的时候&&传递的参数必须为函数
if(this.length>0 && fn.constructor == Function){
   //循环遍历数组的每一项
   while(this.i<this.length){ //while 循环的范围
//获取数组的每一项
var e = this[this.i];
//如果当前元素获取到了,并且当前元素是一个数组
if(e&&e.constructor == Array){
   //直接做递归操作
   e.each(fn);
}else{
   //如果不是数组(那就是一个单个元素)
   //目的为了把数组的当前元素传递给fn函数,并让函数执行
   //fn.apply(e,[e]);
   fn.call(e,e);
}
this.i++ ;
   }
   this.i = null;//释放内存,垃圾回收机制回收变量
}
   }catch(ex){ //do something}
   return this;
}
arr.each(function(item){alert(item);});


Object    var obj = new Object();
     增加 obj.属性=""; obj["属性"]="值";
     删除 delete obj.属性;
     遍历for(var att in obj){alert(att属性+obj[att]值);}
     obj.hasOwnProperty("属性");查看属性是否存在boolean
     toString();返回字符串表示   valueOf();对象的字符串、数值或布尔表示


function test(){

   for(var i = 1; i<=5; i++ ){}
   alert(i);//弹出6
}
//--没有块级作用域,可以访问if中的变量,for/if只是起到控制作用

//使用var关键字声明变量时,变量将添加到距离最近的可用环境中,对于函数而言,
//这个最近的环境就是函数的局部环境。(如果没添加var关键字,则添加到父环境了)

Closure闭包--做private,不会被回收
function f(x){
    var temp = x;
    return function(x){
        temp+=x;
alert(temp);
}
}
var a = f(50);
a(5);//----alert(55);
a(10);//----alert(65);
a(20);//----alert(85);
//-----------------------------------
window.onload = function() {
alert(p1==p2);
};
  //第一个alert(1,1,true)--第二个alert(false);
1、/*function aaa(){
alert(1);
}
var p1=aaa();
var p2=aaa();
*/

2、var p1=function aaa(){
alert(1);
}
var p2=function aaa(){
alert(1);
}


//------js  模拟  Map
function Map(){
//private
var obj={};//空的对象容器,承装键值对

//put方法
this.put=function(key,value){
obj[key]=value;//把键值对绑定到obj对象上
}

//size 方法,获得map容器的个数
this.size = function(){
var count = 0;
for(var attr in obj){
count++ ;
}
return count;
}

//get方法
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] ===false){
return obj[key];
}else{
return null;
}
}
//remove方法
this.remove = function(key){
if(obj[key] || obj[key] === 0 || obj[key] ===false){
delete obj[key];
}
}
}















0 0
原创粉丝点击