[TOC]

对象类型

普通对象object

  1. {属性名:属性值}
  2. 如果有多对键值对,用逗号隔开
  3. 属性值如果直接写var obj = {agr:18,sex:man},“man”没有被声明过,会报错
  4. 属性名可以说是字符串也可以使数字,如果你添加的属性名不是一个字符串或者数字会被转换为字符串

    查:拿到某个属性名的属性值

  5. 点语法

    1. obj.age——>obj的age
  6. 中括号语法

    1. obj[‘age’]——->一定要带引号
    2. 如果查找一个不存在的属性名,那结果是undefined

      console.log(obj.age);
      console.log(obj['age']);
      console.log(obj['sex']);
      console.log(obj.sex);
      console.log(obj['0']);
      // console.log(obj.0);//会报错,因为属性名为数字的时候,不能用点语法
      //注意!!!如果你用中括号语法,不加引号,那就当做“变量”去识别
      // console.log(obj[age]);//报错
      var a = 'age';
      var b = a;
      console.log(obj[a]);
      console.log(obj[b]);
      console.log(obj['b']);//undefined
      
      //注意!!一些特殊的点
      console.log(obj[name]);//xukui
      console.log(obj[length]);//--->obj[0]
      console.log(obj.length);//undefined
      console.log(obj.name);//xukui
      var name = "name";
      console.log(obj[name]);//xukui
      

      普通对象-增改

      ```html ```

      普通对象-删

    3. var obj = {age:18,hobby:‘pingpang’}

      1. 第一种 假删
        1. obj.age = null;
      2. 第二种 真删
        1. delete obj.age;
    4. console.log(obj)

      数组简单了解

    5. 数组:【元素,元素,元素】array

      1. 元素可以使任意的数据类型
      2. 跟普通对象差不多,也是属性名加 属性值
      3. 0、1、2 下标/索引(array的属性名)
      4. length属性 代表这个数组的长度(这个数组有几个元素)
        var ary = [1, 'a', 105, 4, 2, 5, 8678768, 8888]
        ary[0]
        console.log(ary[0]);
        console.log(ary[ary.length - 1]);
        ary[2]
        console.log(ary[2]);
        var result = ary[0]
        console.log(result);
        console.log(ary);
        

        声明变量的几种方式

    6. var a = 100;

    7. let a = 200;
    8. const c = 300;(constant 常态)
    9. 函数
    10. class
    11. import

      数据转换类型

    12. Number()

      1. 普通对象 .toString()结果都是固定‘[object object]’
      2. 在转换为number()
    13. String()
    14. Boolwan()

      var obj={}
      console.log(Number(obj));//1.obj.toString()-->[object,object]-->NaN
      
      var ary1=[];//空数组.toString()-->''-->0
      var ary2=[1];//.toString()-->'1'-->1
      var ary3=[1,2];//.toString()-->'1,2'-->NaN
      var ary3=[true];//.toString()-->'true'-->NaN
      var ary4=[{a:1}];//toString()-->'[object,object]'-->NaN
      var ary5=[""];//toString()-->""-->0
      var ary6=["",""];//toString()-->","-->NaN
      console.log(Number(ary1));//0
      console.log(Number(ary2));//1
      console.log(Number(ary3));//NaN
      console.log(Number(ary4));//NaN
      console.log(Number(ary5));//0
      console.log(Number(ary6));//NaN
      

      练习题
      <script>
       console.log(!(!'Number(undefined)'));
       // 2
       console.log(isNaN(Number(!!Number(parseInt('0.8')))));//false
       //题解:
       /*
       parseInt('0.8')-->0
       Number(0)--->0
       !!0---->false
       Number(false)--->0
       inNaN(0)---->false
       */ 
      </script>
      

      代码运算符(+、-、*、/)

    • -、*、/ 正常理解
      • 特殊理解,不仅仅是数学相加,如果遇到字符串,就会拼串。 ```html console.log(1 - 1); console.log(1 * 1); console.log(1 / 1); console.log(1 + 1); // 遇到字符串

      console.log(1+’1’); console.log(true+’1’); // 特殊记忆 在控制台不能直接这么写,直接{}+1,{}会被忽略,就成了+1,转为数字 // 如果想当成对象去看,那就得加({})+1 console.log({}+1);//‘[objcet objcet]1’ console.log([]+1);//‘1’ console.log([1]+1);//‘11’ console.log([1,1]+1);//‘1.11’

      console.log(true+1);//2 console.log(false+1);//1 console.log(null+1);//1

      // NaN和任何运算都是NaN console.log(undefiend+1);//NaN console.log(Symbol()+1);//报错

    console.log(1-‘3px’);//NaN console.log(1+’3px’);//‘13px’

    <a name="h2m0U"></a>
    ### 基础调试代码
    
    1. 在控制台输出
       1. console.log();
    2. 弹框  最终呈现的内容是  字符串
       1. alert(‘111’);
       1. alert(111);
       1. alert( { } );
       1. alert( [ 1 ] );
    3. 只要是点击取消按钮,结果都是null。如果点击确定,是输入框的内容
       1. console.log(prompt(‘你好吗?’));
    4. 详细输出
       1. var fn = function(){ }
       1. console.log(fn);
       1. console.dir(fn);
    5. confirm 提示框 点击取消结果是false  点击确定结果是true
       1. console.log(confirm(你确定要删除吗?));
    <a name="NBVJJ"></a>
    ### 数据类型检测
    ```html
    <script>
        /* 
        typeof 检测数据类型
          + typeof 1  ---> 结果是由引号包裹
        */
        // 如果检测的是原始值类型,除了null以外都正常
        console.log(typeof 1);//'number'
        console.log(typeof true);//'boolean'
        console.log(typeof '10px');//'string'
    
    
        console.log(typeof null);//'object'???
        /* 
          为什么typeof null是'object'??其实是一个「bug」
          因为typeof  是通过二进制判断的
          如果是000开头,那就会被识别为对象,刚好null是64位0
        */
    
        console.log(typeof undefined);//'undefined'
        console.log(typeof Symbol());//'symbol'
        console.log(typeof 10n);//'bigint'
    
        // 如果检测的是对象类型,不能细分对象
        console.log(typeof {});//'object'
        console.log(typeof []);//'object'
    
        console.log(typeof true);//'boolean'
        console.log(typeof typeof true);//'string'
        console.log(typeof typeof typeof typeof true);//'string'
    
      </script>