zoukankan      html  css  js  c++  java
  • 装箱转换

    例如我们给String的原型加上hello这个方法,然后我们发现在任意一个字符串下都可以找到这个方法

    这是因为JS引擎有意去模糊“对象”和“基本类型”之间的关系

    遇到"."时,JS引擎会临时帮我们做一层“装箱转换”,这里就是 new String() 生成一个“临时对象”

    (ps: number的类型JS殷勤没有做装箱)

    装箱转换

    就是基本类型转换成对应的类:

    // Number
    1
    new Number(1)
    
    // String
    'aaa'
    new String('aaa')
    
    // Boolean
    true
    new Boolean(true)

    Symbol不能new,我们用特殊的方法把它new出来

    因为围绕原始数据类型创建一个显式包装器对象从ECMAScript 6开始不再被支持,所以Symbol不能被new了,而其他原始类型的包装器还能用是历史遗留问题了。

    推荐阅读:简单了解ES6/ES2015 Symbol() 方法

    Object(Symbol('aaa'))
    // 或者
    (function(){return this}).call(Symbol('aaa'))

    拆箱转换

    JS中拆箱转换是调用了对象的toPrimitive方法来拆箱

    它会依次尝试使用valueOf toString来转换

    如果没有valueOf toString方法,或者这2个方法转换出来的都是非基本类型,则报错

    我们还可以自定义这个拆箱转换的方法

     

  • 相关阅读:
    9、UmbracoNewsSite:分页
    7、UmbracoNewsSite:新闻详情页
    6、UmbracoNewsSite:添加新闻分类
    5、UmbracoNewsSite:添加css和js文件
    3、UmbracoNewsSite:文档类型设置
    书单
    文章
    Django-rest framework框架
    Django框架
    前端快速入门
  • 原文地址:https://www.cnblogs.com/amiezhang/p/10325181.html
Copyright © 2011-2022 走看看