javascript 对象的封装(二)---包装类

2018-04-20  本文已影响0人  交大小丑

包装类

  1. 五个原始值:number, string , boolean, undefined, null
    其中number, string, boolean是分别拥有自己的包装类,而undefined和null是没有自己的包装类的
  2. 原始值不是对象,无法拥有自己的属性,但因为的包装类的存在,原始值就好似可以拥有自己的属性了,但其拥有的属性又有点特殊之处,如下用string来举例:

先看一段code

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

上边code中问题的解释:

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

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

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
上一篇 下一篇

猜你喜欢

热点阅读