03、深入浅出对象之薯片

1、什么是对象?

        多个数据的封装体;

        用来保存多个数据的容器;

        一个对象代表现实中的一个事物;

        薯片盒是一个容器,在这个容器里面存放了很多薯片,这些薯片就是数据,等于在这个容器里面放了很多的数据,并对其进行了封装,且薯片盒在现实生活中具体的事物,所以,它是一个对象。

2、为什么要用对象?

        为了统一管理多个数据。

要一片一片拿散装薯片去床上追剧吃,太不方便了,还是用一个盒子装起来,然后直接拿薯片盒走就更加方便高效。

3、对象的组成

        属性:属性名(字符串)和属性值(任意类型)组成

        薯片盒里会放很多个薯片,里面放的就是土豆片(属性名)和调味(属性值)。

        因为土豆片一般肯定都是土豆切片做的,所以,就不会特别去说明了。其实属性名也是一样的,因为都是字符串,所以我就没啥必要非得给属性名去加个引号表示它是字符串。当然,也不是说这种方式有问题,只能说,可以,但是没必要。

        调味就不一定了,首先调味粉很多口味,类似黑松露味等,其次还有些是酱料类型的。就比如番茄酱,沙拉酱等。那么,关于调味就连是什么形式的我都不能确定,那我能偷懒不表明数据类型嘛?肯定就不行了。因此,属性值是任意类型,因此我得尊重各个类型的表达规则。

        方法:一种特别的属性(属性值为函数)

        这个就可以理解为,我买了盒薯片,但是这商家特别黑心,它居然在里面还给我装了盒没拆封的薯片。呵,和我玩套娃呢。它的属性名为原切土豆,属性值为那一盒还没拆封的薯片盒,也就是函数。这种它也是属于属性。但是,一般商家不会这么无良,所以这种情况的出现就比较特殊。那为了表示它的特殊,它就有了独立的名字表示——方法。

4、如何访问对象内部数据?

        .属性名:编码简单,有时不能用

        我饿了,我要吃薯片,那怎么吃到里面的薯片呢?直接用手撕呀,简单高效。但是什么时候都行吗?万一它那薯片没有那上面那个波浪行的剪口怎么办?

        ['属性名']:通用

        那没有剪口,咱就用剪刀呗。任何薯片都可以使用剪刀剪开。但是,就比用手撕麻烦一点,毕竟我还要去找剪刀。

(嘤嘤嘤,咱一般都是直接撕,实在不行才用剪刀。谁让咱懒得出奇)

5、什么情况下必须使用['属性名']的方式?

        1、属性名包含特殊字符:- 空格

        买了包薯片,发现里面的土豆片名为毒土豆片。众所周知,我贪生怕死。于是,我为了保命着想,我决定还是使用剪刀吧。那个所谓的毒,就是特殊字符——空格;

        2、属性名不确定

        买了包薯片,薯片里面套娃了一包薯片,但是我想要里面那包薯片的土豆片来装我的调味料,但是我撕开获得的是外面的那包薯片的土豆片。那这不是我希望的,我觉得外面的那个土豆片B格配不上我的调味。于是,我直接使用剪刀将外面的薯片剪开,获取它里面所有的东西,包括里面的那包薯片。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    /*
    1、什么是对象?
        多个数据的封装体
        用来保存多个数据的容器
        一个对象代表现实中的一个事物
    2、为什么要用对象?
        统一管理多个数据
    3、对象的组成
        属性:属性名(字符串)和属性值(任意类型)组成
        方法:一种特别的属性(属性值为函数)
    4、如何访问对象内部数据?
        .属性名:编码简单,有时不能用
        ['属性名']:通用


     */

    var p = {
        name: 'tom', age: 12,
        setName:function (name) {
            this.name = name
        },
        setAge:function (age) {
            this.age = age
        }
    }

    p.setName('Bob')
    p['setAge'](123)
    console.log(p.name);



    /*
    5、什么时候必须使用['属性名']的方式
        1、属性名包含特殊字符:- 空格
        2、属性名不确定
     */
    var p = {}
    //1、给p对象添加一个属性:content type:text/json
    // p.content-type = text/json 不可用
    p[content-type] = text/json
    console.log(p["content-type"]);

    // 2、属性名不确定
    var propName = 'myAge'
    var value = 18
    // p.propName = value  不能用
    p[propName] = value
    console.log(p[propName]);
</script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值