256 对象的理解和使用,什么时候必须 使用['属性名'] 的方式

  • 什么是对象?

    • 多个数据(属性)的集合
    • 用来保存多个数据(属性)的容器
  • 属性组成:

    • 属性名 : 字符串(标识)
    • 属性值 : 任意类型
  • 属性的分类:

    • 一般 : 属性值不是function, 描述对象的状态
    • 方法 : 属性值为function的属性, 描述对象的行为
  • 特别的对象

    • 数组: 属性名是0,1,2,3之类的索引
    • 函数: 可以执行的
  • 如何操作内部属性(方法)

    • .属性名

    • ['属性名']: 属性名有特殊字符/ 属性名是一个变量 【属性名不确定】

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>03_对象</title>
</head>

<body>
    <!--
1. 什么是对象?
  * 多个数据的封装体
  * 用来保存多个数据的容器
  * 一个对象代表现实中的一个事物
2. 为什么要用对象?
  * 统一管理多个数据
3. 对象的组成
  * 属性: 属性名(字符串)和属性值(任意)组成
  * 方法: 一种特别的属性(属性值是函数)
4. 如何访问对象内部数据?
  * .属性名: 编码简单, 有时不能用
  * ['属性名']: 编码麻烦, 能通用 【**属性名是一个变量**】
-->
    <script type="text/javascript">
        var p = {
            name: 'Tom',
            age: 12,
            setName: function(name) {
                this.name = name
            },
            setAge: function(age) {
                this.age = age
            }
        }

        p.setName('Bob');
        p['setAge'](23);
        console.log(p.name, p['age']);  // Bob  23
    </script>
</body>

</html>

问题: 什么时候必须 使用['属性名'] 的方式?属性名是一个变量

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>03_相关问题</title>
</head>

<body>
    <!--
问题: 什么时候必须使用['属性名']的方式?
  1. 属性名包含特殊字符: - 空格
  2. 属性名不确定 【就要用变量名保存】
-->
    <script type="text/javascript">
        var p = {};
        //1. 给p对象添加一个属性: content type: text/json
        // p.content-type = 'text/json' //不能用
        p['content-type'] = 'text/json';
        console.log(p['content-type']); // text/json

        //2. 属性名不确定 【就要用变量名保存】
        var propName = 'myAge';
        var value = 18;
        // p.propName = value //不能用 【因为属性名propName是字符串,上面的propName是变量名,变量名不是字符串】
        p[propName] = value;
        console.log(p[propName]); // 18
    </script>
</body>

</html>

posted on 2020-01-27 11:26  冲啊!  阅读(323)  评论(0编辑  收藏  举报

导航