对象——常用操作及方法

1.对象属性的访问:

   例:

 var obj={atr:"hello"};
 console.log(obj.atr);
 console.log(obj["atr"]);
 console.log(obj['a'+'t'+'r']);
  上述代码的三种访问方式都是正确的,均会正常的输出hello。

  事实上,对象属性的访问有两种方式。一是通过(.),其右侧必须是对象的属性名称(若是保留字,则不可以)。二是通过([]),方括号内的表达式计算结果为字符串,且值就是属性的名 称。

   在对象的属性的访问中,若对象的属性不存在,则会返回undefined。

2.对象属性的继承:

   对象中的有些属性是自有属性,但有些属性是从原型对象中继承来的。

   比如:var obj={x:1},那么,obj就拥有自有属性x以及从原型Object.prototype继承来的属性了。

   注:在属性的赋值操作中,总是在原始对像上修改或创建属性,对原型对象的属性并不会修改。

3.删除属性:

   delete只能删除对象的自有属性,并不会删除对象的继承属性(即原型对象的属性)。

   当删除对象属性成功或删除操作无副作用(比如:删除的对象属性不存在)、delete后不是一个属性访问表达式时,返回值均为true。

   例如:

 var obj={x:1};
 console.log(delete obj.c);//true
 console.log(delete 1);//true
 console.log(delete obj.x);//true
 console.log(obj.x);//undefied
4.检测属性:

   通过in、hasOwnProperty()、propertyIsEnumerable()来查询属性。

   (1). “属性名” in 对象名:如果对象属性或是继承属性中包含这个属性就会返回true。

          比如:

  var obj={x:1};
  console.log("x" in obj);//true
  console.log("y" in obj);//false
  console.log("toString" in obj);//true
   (2).对象.hasOwnProperty(“属性名”):该函数方法只能检测属性是否为对象的自有属性。

         比如:

  var obj={x:1};
  console.log(obj.hasOwnProperty("x"));//true
  console.log(obj.hasOwnProperty("y"));//false
  console.log(obj.hasOwnProperty("toString"));//false
   (3).对象名.propertyIsEnumerable("属性名"):该方法只能检测对象的自有属性且属性是可枚举的。

         例如:

 var obj={x:1,y:2};
 Object.defineProperty(obj,"y",{enumerable:false});//将obj的y属性设置为不可枚举的
 console.log(obj.propertyIsEnumerable("x"));//true
 console.log(obj.propertyIsEnumerable("y"));//false,y虽为自有属性,但已经设置为不可枚举
 console.log(obj.propertyIsEnumerable("toString"));//false,因为是继承属性且不可枚举
   (4).in的特殊用处:区分属性不存在和属性存在但值为undefined。
 var obj={y:undefined};
 console.log(obj.y===undefined);//true,y属性值为undefined
 console.log(obj.x===undefined);//true,x属性不存在
 console.log("y" in obj);//true,y属性存在
 console.log("x" in obj);//false,x属性不存在
4.枚举属性:

    通过for/in来遍历对象的可枚举属性(包括自有的和继承的属性)。

    Object.keys(对象名):返回数组,数组存放对象所有自有的可枚举属性的名称;

    Object.getOwnPropertyNames(对象名):返回数组,数组中含所有自有属性的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值