Object是ECMAScript中使用最多的一种类型(就像java.lang.Object一样,Object是所有类的基础类)
两种创建方式(实例化对象):
var obj = new Object();
var obj = {}; //常用
//设置对象属性
obj.name = "张三";
obj.age = 20;
obj.sex="男";
obj['bri'] = "1900-01-09";
obj.say = function(){
alert("helloworld");
}
//访问对象和方法
alert(obj.name);
alert(obj.age);
obj.say();
//delete操作符 删除对象的属性或方法
delete obj.age;
delete obj.say;
alert(obj.age);
obj.say();
//遍历对象,拿到对象属性的key和value
for(var attr in obj){
alert(attr+" : "+obj[attr]); //对象属性:属性值
}
**************object常用方法************
//Constructor 保存着用于创建当前对象的函数 (构造函数)
alert(obj.constructor);
var arr=[];
alert(arr.constructor);
//hasOwnProperty(propertyName)用于检测给定属性在对象中是否存在
alert(obj.hasOwnProperty(“name”));
isPrototypeOf(Object)检测原型
propertyIsEnumerable(propertyName)用于检测给定属性是否能用for-in枚举
alert(obj.propertyIsEnumerable(“name”));
***********object模拟java中的Map*********
function Map(){
var obj = {};
//put方法
this.put = function(key,value){
obj[key]= value;
}
//获取Map的size值
this.size = function(){
var count = 0;
for(var attr in obj){
count++;
}
return count;
}
//get通过key获取value
this.get = function(key){
if( obj[key] || obj[key]===0 || obj[key]===false){
return obj[key];
}else{
return null;
}
}
//remove通过key删除元素
this.remove = function(key){
if( obj[key] || obj[key]===0 || obj[key]===false){
delete obj[key];
}
}
//遍历每个元素
this.eachMap = function(fn){
for(var attr in obj){
fn(attr,obj[attr]);
}
}
}
//使用示例
var m = new Map();
m.put("01","abc");
m.put("02",0);
m.put("03",true);
m.put("04",new Date()); //put方法
alert(m.size()); //获取m的size
alert(m.get("02")); //根据key获取value
//m.remove("03"); //根据key删除元素
alert(m.get("03"));
m.eachMap(function(key,value){ //遍历元素
alert(key+" : "+value);
})
******利用object对象特性,去掉数组重复项****
js对象特性 : 在js对象中key是永远不会重复的
var arr = [2,1,2,10,2,3,5,5,1,10,13];
//1、把数组转成一个js对象,把数组中的值变成js对象中的key
//2、把对象还原成数组
function toObj(arr){
var obj = {};
for(var ele in arr){
obj[arr[ele]]="";
}
return obj;
}
function objToArr(obj){
var arr = [];
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}
var reAttr = objToArr(toObj(arr));
alert(reAttr); //1,2,3,5,10,13