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

Posted jianjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了156 对象的理解和使用,什么时候必须 使用['属性名'] 的方式相关的知识,希望对你有一定的参考价值。

  • 什么是对象?

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

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

    • 一般 : 属性值不是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 //不能用
        p[propName] = value;
        console.log(p[propName]); // 18
    </script>
</body>

</html>

以上是关于156 对象的理解和使用,什么时候必须 使用['属性名'] 的方式的主要内容,如果未能解决你的问题,请参考以下文章

使用Java理解程序逻辑错题

156前端 | 精读《使用 CSS 属性选择器》

面向对象的个人理解

React Hook介绍与使用心得

面向对象编程思想(前传)--你必须知道的javascript(转载)

React hooks:如何观察 JS 类对象的变化?