zoukankan      html  css  js  c++  java
  • JavaScript包装对象

    参考资料:《JavaScript权威指南》包装对象_P46

    在JavaScript中对象是一种复合值:它是属性或已命名值的集合。我们看到字符串也同样具有属性和方法:

            var s="hello world";//一个字符串
            var word=s.substring(s.indexOf(" ")+1,s.length);//使用字符串属性

    字符串既然不是对象,为什么它会有属性呢?只要引用了字符串s的属性,JavaScript就会将字符串值通过调用new String(s)的方法转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁(其实在实现上并不一定创建或销毁这个临时对象,然而整个过程看起来是这样)。

    同字符串一样,数字和布尔值也具有各自的方法:通过Number()和Boolean()构造函数创建一个临时对象,这些方法的调用均是来自于这个临时对象。null和undefined没有包装对象,访问它们的属性会造成一个类型错误。

    看如下代码,思考它们的执行结果:

           var s="test";//创建一个字符串
           s.len=4;  //给它设置一个属性
           var t=s.len;//查询这个属性

    当运行这段代码时,t的值是undefined。第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁了这个对象。第三行通过原始的(没有被修改过)字符串值创建一个新字符串对象,尝试读取其len属性,这个属性自然不存在,表达式求职结果为undefined。这段代码说明了在读取字符串、数字和布尔值的属性值(或方法)的时候,表现的像对象一样。但如果你试图给其属性赋值,则会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并未继续保留下来。

    JavaScript中存取字符串、数字或布尔值的属性时,创建的临时对象称为包装对象,它只是偶尔用来区分字符串值和字符串对象、数字和数值对象以及布尔值和布尔对象。通常包装对象只是被看作是一种实现细节,而不用特别关注。由于字符串、数字和布尔值的属性都是只读的,并且不能给它定义新属性,因此你需要明白它们是有别于对象的。

  • 相关阅读:
    centos7系统初始化
    瀑布流无限加载infinitescroll插件与masonry插件使用
    网页前端导出CSV,Excel格式文件
    js添加收藏夹
    Fiddler修改http请求响应简单实例
    Nodejs的Gruntjs使用一则
    Jquery插件validate使用一则
    PostgreSQL操作-psql基本命令
    SSH连接时出现Host key verification failed的原因及解决方法以及ssh-keygen命令的用法
    在ubuntu20.04上设置python2为默认方式
  • 原文地址:https://www.cnblogs.com/f6056/p/11817128.html
Copyright © 2011-2022 走看看