JavaScript 对象(二)

一:对象的增、删、改、查

1、增: 所谓增添一个对象的属性,就是直接对该属性进行赋值操作即可,这就相当于为该对象添加了一个新属性,而打印未添加的属性,浏览器不会报错,而是会打印出undefined

 var obj = {};
    console.log(obj.name); //undefined (不会报错)
    obj.name = '软件开发';
    console.log(obj.name); // 软件开发

2、删:我们通过delete操作符来删除一个对象的属性

 var obj = {
       name : 'lyl'
     };
     console.log(obj.name); //lyl
     delete obj.name; 
     console.log(obj.name); //undefined

3、改: 修改一个对象的属性是最简单的了,直接通过赋值操作赋予其其他的值即可

var obj = {
      name: 'lyl'
    };
    console.log(obj.name); // lyl
    obj.name = 'obj';
    console.log(obj.name); // obj

4、查:查询一个对象的属性值有两种方法

var obj = {
      name: 'lyl'
    };
    // 第一种方法
   console.log(obj['name']); //lyl
  //  第二种方法
    console.log(obj.name); // lyl
  //p.s.最本质的是第一种方法,因为在使用第二种方法时,后台自动将其转换为第一种字符串的形式来查询 

p.s.以上的增、删、改三种操作都只是针对当前对象的属性进行操作,而不会影响到当前对象的原型的属性。

  而查询是先看看当前对象本身是否设置了该属性,如果当前对象未设置该属性,则再看该对象的原型中是否设置了该属性,若两者都没有,则返回undefined

二:包装类:

1、五个原始值:number, string , boolean, undefined, null

其中number, string, boolean是分别拥有自己的包装类,而undefined和null是没有自己的包装类的

  2.原始值不是对象,无法拥有自己的属性,但因为的包装类的存在,原始值就好似可以拥有自己的属性了,但其拥有的属性又有点特殊之处,如下用string来举例:
先看一段code

//  str是string类型的,非对象,不能拥有属性,为什么能打印出str.length?
     var str = 'abcd';
     console.log(str.length); //4

上边code中问题的解释:

 // 因为每次执行完一条完整js语句后该类型对象的包装类就会将该语句包装,所以也就不会导致报错了,这些都是后台自己写的
     var str = 'abcd';
    //  var str1 = new String('abcd');
     console.log(str.length); //4
    //  var str1 = new String('abcd');
    // console.log(str1.length);

注意:每次包装类包装完一次完整语句后就会被销毁。(即解释一条语句,用包装类包装一次,然后销毁),这回导致其和正常对象的一些不同之处,如下例子

 var str = 'abcd';
    str.len = 4;
    console.log(str.len); // undefiend
  //???

关键在于‘销毁’一词上,解释如下:

 var str = 'abcd';
    // var str1 = new String('abcd');
    // 销毁
    str.len = 4;
    // var str1 = new String('abcd');
    // str1.len = 4;
    // 销毁
    console.log(str.len); // undefiend
    // var str1 = new String('abcd');
    // console.log(str.len);   str1为刚创建的对象,其len属性自然为undefiend
    // 销毁

一个易错的坑:

// 总之记得'原始值包装类''销毁'这两句话就行
   var str = 'abcd';
   str.lenth = 2;
   console.log(str);  // ab or abcd ? answer is abcd
   console.log(str.length); // 2 or 4 ? answer is 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值