js复习---------知识点

本文详细介绍了JavaScript中的隐式和显式数据类型转换规则,包括Number、String、Boolean之间的转换方法。同时,讲解了对象的创建、访问、遍历及属性操作,以及如何进行类型检测和原型相关知识。对于开发者理解和操作JavaScript数据类型及对象具有实用价值。
摘要由CSDN通过智能技术生成

隐式转换


1.基本数据类型
    number + 'string'     =》string
    number + number    =》number
2.引用数据类型
    object  valueOf() toString() 

隐式转换规则 


// 1.data默认调用的是toString()   (Date求原始值比较特殊,PreferredType是String,其他Object对象均为Number)
// 2.如果内部重新写了toString()调用toString()
// 3.如果内部重写了valueOf()调用valueOf()
// 4.如果内部重新写了toString()和valueOf()      调用valueOf(); (其他Object对象的PreferredType均为Number)、

[] + [] // ""

[] + {}    // "[object Object]"

{} + [] // 0     (

js解释器会将开头的 {} 看作一个代码块,而不是一个js对象;{ } + [ ]被解析成了

{ };+[ ],前面是一个空代码块被略过,剩下+[ ]就成了一元运算。[ ]的原值是””, 将””转化成Number结果是

0。

{} + {} //    "[object Object][object Object]"    或   NaN  (在金丝雀版本的chrome浏览器和node中,结果符合预期。结果是"[object Object][object Object]" 。原因是在node中会将以“{”开始,“}”结束的语句外面包裹一层( ),就变成了({ } + { }),结果就符合预期。


显式转换


    1.将其他数据类型转换为String
        1.toString()
        2.+ "" 或者+ ''
        3.String()
    2.将其他数据类型转换为number 
        1.Number()      

                    Number(true); //1
                   Number(false); //0
                   Number(null); //0
                    Number(undefined); //NaN
                     Number(10); //10 如果是数字值,原样输出
        2.parseInt();

                       parseInt(10); //10 如果是整数值,原样输出 
                      parseInt(10.3); //10 如果是小数,舍去小数点一级后面的内容
                      parseInt("+12.1"); //12; 首位为符号位,其余为为数值,转换为整数 
                        parseInt("1+2.7"); //1; 符号位出现在其他位置,保留符号位前面的数值 
                       parseInt("0xa"); //10; 如果仅包含十六进制格式,转为为对应的十进制的值
                        parseInt("010"); //10; 【注意】不会当做八进制被解析,结果为10
                           parseInt(""); //NaN;空字符串被转换为NaN
                          parseInt("123ac"); //123;
        3.parseFloat();

                          parseFloat("123"); //123;如果仅包含数值,转换为对应的数值
                        parseFloat("234.1"); //234.1;保留小数点后面的数值 
                      parseFloat("+12.1"); //12.1; 首位为符号位,其余为为数值,转换为整数 
                       parseFloat("1+2.6"); //1;符号位出现在其他位置,保留符号位前的数值 
                    parseFloat("0xa"); //0; 【注意】不会当做十六进制来解析。
                    parseFloat("010"); //10; 【注意】不会当做八进制被解析,结果为10
                      parseFloat(""); //NaN;空字符串被转换为NaN
                   parseFloat("123.3ac"); //123.3;
        4.+

                      +"23"                    //23
                         +null                    //0
                       +undefined               //NaN
    3.将其他数据类型转换为Boolean
        1.Boolean()          Boolean('hello') //true
        2.!!a           !!'hello' //true
 

对象


    1.单个对象的创建
        字面量 var obj={}
        构造函数 var obj=new Object();//{}
    2.对象的访问
        点访问 obj.name
        中括号访问 obj['age']
    3.遍历对象
        for(let key in obj){
            key--键 属性名
            obj[key]--值 属性值
        }
        var str='hjagsjfkahk';
        for(let key of obj){
            
        }
    4.删除对象属性
        delete obj.name
    5.显示类型转换
        Boolean()
        String()
        Number()
    6.检测属性 
        1.in (检测某属性是否是某对象的自有属性或者是继承属性)
        'name' in obj 'valueOf' in obj
        2.hasOwnProperty(检测属性是否是自有属性 继承属性返回false)
        obj.hasOwnProperty('valueOf');//false
        3.propertyIsEnumerable(检测属性是否是可枚举属性 可枚举属性返回true)
        obj={
            name:"zhangsan",
            age:12
        }
    7.原型 *****    
    原型:每一个构造函数都有一个原型对象,原型对象都有一个指针(constructor)指向构造函数
    实例有一个指针(__proto__)指向原型对象
    静态方法:只能由构造函数本身去调用 
    Object.defineproperty()
    实例/原型方法:存在原型对象中得方法 valueOf() toString() constructor 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值