//去除数组中重复元素
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
}
<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];
}
}
}