zoukankan      html  css  js  c++  java
  • js基础学习之-js包装对象

    1     var test = "test";
    2         test.a = "hello";
    3     console.log(test.a); //undifined

    定义:
    在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。
    通俗来讲:
    字符串,数值,字符串,这些单身狗看其它人都有对象,非常不爽,所以自己也搞了个对象,名字叫包装。

    1 console.log("hello world".length);
    2 console.log("this a string".indexOf("a"));

    其实,在我们调用这些方法和属性时,JS内部已经隐式地帮我们帮创建了一个包装对象了,以上的实际的情形应该是这样的:

    1 console.log(new String("hello world").length);
    2 console.log(new String("this a string").indexOf("a"));

    包装对象和显式创建对象的区别:

    区别1:

    二者是内容相等,但是存储空间地址不一样

    1 var a1 = "test",
    2     a2=new String("test");
    3 console.log(a1 == a2);//true
    4 console.log(a1 === a2);//false

    区别2:
    隐式创建的包装对象,在使用完后之后就会被抛弃了。简单来说就是,一个大大的负心汉,上完我,就抛弃,还重新去找其他对象。
    拿我们开头的那道题来说:
    test.a = "hello";
    这里隐式创建了一个包装对象,所以这里赋值不会报错。
    console.log(test.a);
    这里之前的包装对象已经被抛弃了,但是使用了"."运算符,所以又创建一个新的包装对象,但是这个对象的属性a并没有赋值,所以属性a的值是undefined。

    说到实际运用中,有的浏览器性能不是很好,比如说低版本IE,当频繁处理字符串时,效率会很低。所以很多时候,我们还不如直接显式地创建包装对象,防止浏览器过多地创建隐式的包装对象,提升性能。

    1 //不推荐使用种方法
    2 var example = "this is a example";  
    3 //推荐使用这种方法,提升性能。
    4 var example2 = new String("this is a example");
  • 相关阅读:
    【myEcplise2015】导入喜欢的主题
    【SVN】删除SVN上的历史资源路径和SVN上的历史用户信息
    【Linux】linux命令大全
    【Linux】在虚拟机上安装CentOS7
    Spring MVC+Mybatis 多数据源配置
    Spring 加载类路径外的资源文件
    OkHttp使用详解
    在虚拟机搭建JStrom
    在Windows下搭建RocketMQ
    解决confluence的乱码问题
  • 原文地址:https://www.cnblogs.com/x739400043/p/5618211.html
Copyright © 2011-2022 走看看