zoukankan      html  css  js  c++  java
  • 包装对象——JavaScript中原始类型拥有属性的原因

      我们先看段代码:

    var s = "Test";
    var len=s.length;

      我们知道在JavaScript中像上面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有length的属性呢?

      原因是在JavaScript中只要引用了字符串(数字、布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起来是这样)。这个过程就叫包装对象。

      有没有办法验证上面的解释呢,我们来看两段代码:

      代码一:

    var s = "Test";
    s.len=10;//创建字符串对象,并添加len属性,然后销毁
    var t = s.len;//创建字符串对象,读取len属性,由于不存在所以结果是 undefined

      代码二:

    var s = new String("Test");
    s.len = 10;
    var t = s.len;//10

      最后一点需要注意的是,原始对象和包装对象不严格相等:

    var s = "Test", S=new String("Test");
    console.log(s == S);//true
    console.log(s === S);//false
  • 相关阅读:
    数组模拟队列
    数组模拟栈
    数组实现双链表
    别再傻傻地说电脑内存不够用了,望周知!
    电脑内存又不够了?六个方法拯救你的C盘!
    jsp基础语法与指令
    最新的web.xml配置代码
    浅谈Session技术
    浅谈cookie技术
    Javaweb编程之Response下载文件
  • 原文地址:https://www.cnblogs.com/jscode/p/2694622.html
Copyright © 2011-2022 走看看