JavaScript对象

JavaScript对象

对象是一种复合值,它将别的类型值聚合在一下(包括对象类型)。对象可以看成属性的集合,每个属性本质都是一个键值对,属性名为字符串,也可以理解为字符串到值的映射。对象主要包括属性、方法两大部分。
除了字符串、数字、true、false、null、undefined外,其它都是对象,包括函数。

对象的创建

  • 对象直接量创建
var empty ={};
var people = {name:"lhc",age:"25"};

属性名如果有空格需要加上“”,对象直接量是一个表示式,每次执行都会产生一个新的对象。

  • 关键字new创建
    new后面需要加构造函数。
var o = new Object();//类似 var o= {};
  • Object.create()创建
    Object.create是一个静态的函数,传入需要继承的原型。
var o =  Object.create({name:"lhc",age:"25"});//o 继承了{name:"lhc",age:"25"}

属性的访问

javaScript提供了2种属性访问方式:“.”、“[]”。

var people = {name:"lhc",age:"25"};
console.log(people.name);//打印lhc
//这种方式类似于c和java 是比较常用的方式。可以一级级访问下去。

console.log(people[name]);//打印lhc
//类似c中数组访问方式,这种常用于属性名为变量的情况。

var s = "name";
console.log(people[s]);//打印lhc

继承

在说继承之前先看看原型,因为继承就是通过原型实现的。
每个对象中都会从原型prototype继承属性,Object.prototype是所有对象的继承源。在chrome打印对象时会看到对象中有一个proto 即是继承的对象。
一个属性在一个对象查找过程:一个对象o 查询x属性,会先在对象o中查找属性x,如果没有找到会在o的原型对象中查找,一直查找到原型对象为null为止,如果没有找到返回undefined
属性直接赋值操作,不会修改原型链上的属性,只会影响原始对象。

动态增加删除属性

javascript允许动态的增加或者删除属性,注意直接操作原始属性,不能操作继承的属性。

var people = {name:"lhc",age:"25"};
delete people.age;//删除people的age属性
people.sex = "男";//增加一个属性

检测属性

  • in
    判断对象中是否有属性,包括继承属性。
  • hasOwnPreperty()
    判断对象是否有属性,不包括继承属性。
  • propertyIsEnumerable()
    对象是否有属性,并且是否可以枚举。
   var people = {name:"lhc",age:"25"};
    var o = Object.create(people);
    o.sex = "男";
    console.log("name" in o);//true

    console.log(o.hasOwnProperty("name"));//false
    console.log(o.propertyIsEnumerable("name"));
    console.log(o.hasOwnProperty("sex"));//true
    console.log(o.propertyIsEnumerable("sex"));//true

枚举属性

function merge(o,p){
     for(prop in p){
         if(o.hasOwnProperty[props]) continue;
         o[props]=p[props];
     }
     return o;
}
//p对象中元素合并o对象中,同名的不进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值