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

  • 相关阅读:
    C语言文件操作函数大全
    iOS
    HDU 5042 GCD pair 预处理+二分 分段
    swoole新手教程01-环境搭建及扩展安装
    Cocos2d-X中的Slider控件
    CSS之BFC
    代理server的概要知识
    C#比較对象的相等性
    Effective C++ 35,36,37
    oled屏幕
  • 原文地址:https://www.cnblogs.com/f6056/p/11817128.html
Copyright © 2011-2022 走看看