第一篇 JS语言基础之变量和属性名的区别

183 阅读1分钟

试一试 :

    <script>
        var name = 10 ;
        var obj = {
            name : '小明',
            2 : 10
        }
        console.log(obj.name);
        console.log(obj['name']);
        console.log(obj[name]);
        
    </script>

  1. 对象的属性名

    • 字符串 (name : '小明' 等同于 'name' : '小明')

      • 默认是字符串,如果不是,会转为字符串

      • 如果是值类型(布尔 单项数组 null undefined)都会默认转为字符串

        • 单项数组的项如果是数字或者‘数字’ 会转换为数字,其他都会转为字符串
      • 可以使用. 和 []

      • []里是属性名 属性名是字符串, 如果里面是变量,那就找变量存储的值

        • 变量没声明 xxx is not defines

        • 变量的值不是obj的属性 undefined

    • 数字

      • 取数字属性名的属性值,只能使用[] 不能使用.
  2. 变量与值

     console.log(obj[name])
    
     ‘age’ 代表值 代表本深
    
     age 代表变量,代表变量存储的值
    
     此时obj[name变量代表的值],去obj里找以name存储的值为属性名的属性值
    
     因此是找obj[10] => undefined
    
  3. 结论

    1. 操作一个对象的属性只有两种方式 .属性名 ,[‘属性名’]

    2. 属性名只能是数字或字符串,不可能是变量

    3. 变量不代表自己,代表他存储的那个值

答案:

    <script>
        var name = 10 ;
        var obj = {
            name : '小明',
            2 : 10
        }
        // 获取OBJ这个对象的NAME属性对应的值
        console.log(obj.name); // => '小明'
        // 获取OBJ这个对象的NAME属性对应的值
        console.log(obj['name']);// => '小明'
        console.log(obj[name]);// undefined
        
    </script>
    

扩展

        var name = 'mike' ;
        var obj = {
            // 属性名:属性值(放变量也是把变量存储的值拿过来做属性值)
            name : name,
            // 可以改写成
            name,
        }
        //相当于 name : 'mike'

着ES6中,当对象的属性名和属性值(变量)一模一样('val' : val)时,可以改写成只有属性名