第二节 javascript的对象
在 javascript 中 Object 所有类的基础类
定义对象 var obj = new Object();
建议这样 var obj={};
// 给对象添加属性
obj.name = 'sohucw';
obj.age = 20 ;
//obj.sex = '男';
obj["birthday"] = '1990-08-07';
obj.say = function(){
alert('hello world!');
}
// 访问对象的属性或方法
console.info(obj.name);// sohucw;
......obj.say(); // hello world
// delete 操作符 删除对象的属性或方法的
delete obj.age ;
delete obj.say ;
console.info(obj.name)
console.info(obj.age); // <span role="presentation" class="objectBox objectBox-undefined ">undefined</span>
console.info(obj.sex);//男
obj.say(); // error
遍历一个js对象 for in
for(var attr in obj){
console.log(attr +':'+ obj[attr]);
}
//Constructor保存对象的创建函数
//alert(obj.constructor);
//var arr = [] ;
//alert(arr.constructor);
//hasOwnProperty(propertyName) 用于检测给定属性在对象中是否存在
//alert(obj.hasOwnProperty('sex'));
//isPrototypeOf(Object) 检测原型
//检测给定的属性是否能被for in 所枚举出来
//alert(obj.propertyIsEnumerable('say'));
简单的 对象就说到这里 下面给出 用 javascript 来 模拟 java中的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 方法 根据key 取得value
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];
}
}
// eachMap 变量map容器的方法
this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}
}
//模拟java里的Map
var m = new Map();
m.put('01' , 'abc');
m.put('02' , false) ;
m.put('03' , true);
m.put('04' , new Date());
//alert(m.size());
//alert(m.get('02'));
//m.remove('03');
//alert(m.get('03'));
m.eachMap(function(key , value){
alert(key +" :"+ value);
});
关于一个 javascript 面试题的反思
题是这样的 :
var arr = [2,1,2,10,2,3,5,5,1,10,13]; // 要求去掉里面的重复的元素 方法有多重 在这里可以运用 js中对象的 key 的概念 因为对象中的key 是唯一的
下面是代码的实现 思路是这样的:
// 1 把数组转成一个js的对象
// 2 把数组中的值,变成js对象当中的key
// 3 把这个对象 再还原成数组
// 把数组转成对象
function toObject(arr){
var obj = {} ; // 私有的对象
var j ;
for(var i=0 , j= arr.length ; i<j; i++){
obj[arr[i]] = true ;
}
return obj ;
}
// 把这个对象转成数组
function keys(obj){
var arr = [] ; // 私有对象
for(var attr in obj){
if(obj.hasOwnProperty(attr)){ //YUI底层代码
arr.push(attr);
}
}
return arr ;
}
//综合的方法 去掉数组中的重复项
function uniq(newarr){
return keys(toObject(newarr));
}
console(uniq(arr));
得到想要的结果的
相信大家对 javascript中的 对象的概念有一定的了解了 本人也是刚入行不久 错误的地方请指出 共同学习进步