花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 41|回复: 16

JS:对象和对象属性及对象方法

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2022-7-20 19:09 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    本帖最后由 马黑黑 于 2022-7-20 19:16 编辑

    JS:对象和对象属性及对象方法 | 马黑黑

    JavaScript的对象,与现实生活中的对象,并无多大脱节。JS对象,宽松来讲,就是对生活中某个对象的描述,比如猪:

    let 猪 = {
            姓名: '阿黑',
            月龄: 8,
            体重: 250,
            体长: 1.02,
            身高: 0.75,
            性格: '憨厚老实',
            爱好: ['吃苹果','睡觉','泡温泉'],
    };

    猪是我们要描述的对象。上例中,猪这个对象就是一个变量,所以对象名称之前用了 let 作为声明对象(变量)之用,也可以根据需要用 var 和 const 来声明对象。JS声明或定义一个对象,和声明一个变量的方法使用了几乎相同的方式,不同的是,对象的属性集合要放置在花括号 {} 之内,且每一个属性的键与值(JS称之为键值对)用冒号隔开,冒号之前是键名(key),冒号之后是键值(value);键名不需要引号,键值则根据数据类型决定所需的符号,如字符串类型需要引号、数字不需要、数组则按数组形式表达(例如例中的爱好属性)。两个键值对之间则用逗号隔开,分行不是必须的,分行的意义仅在于方便阅读与修改(或许也为了美观)。

    对象的属性其实也就是变量,键名(key,例如体长)相当于变量名,键值(value,例如1.02)相当于变量值,所以,对象可以看作是变量的集合、变量的容器。当猪被构建成为一个JS对象,其下可以拥有理论上无限多的变量,而这些变量都是围绕着猪这一对象。JS对象存在的意义就是它所能集成的变量的集合性,我们因此可以一下子得到某一特定属性,不用担心这个属性可能是属于马的或牛的:

    let weight = 猪.体重;
    console.log(weight);

    是的,读取对象的某一属性——JS称为访问对象属性——,方法是“对象名称.键名”,英文的说法是“object.key”或简写“obj.key”。

    我们构建一个对象时,我们不一定能将所有的对象属性都罗列出来,例如我们上面构建的猪的对象,就没有性别,当客户咨询猪的性别时就没有对应的属性提供答案。追加性别属性,可以修改原始对象,也可以用追加的方法:

    猪['性别'] = '菇凉';

    这是将性别属性建立到了猪的对象之中,所采用的方法是数组常用到的方括号,方括号内键名需要用到引号(但通过声明变量再追加的方式除外)。这样就把对象猪的新属性即性别成功添加到了对象之上,此后,我们用 console.log(猪.性别); 咨询猪的性别时,控制台会打印出“菇凉”。

    对象已有属性不一定一成不变,例如随着时间的推移,猪的体重增多了,我们要修改这一属性,修改方法除了修改原对象属性值,也可以用覆盖方式修改。覆盖修改属性值和添加新属性是一样的语法:

    猪['体重'] = 280;

    如此,定义对象之初的 250 的体重值就被新设定的 280 所覆盖(单位可能是kg)。

    对象除了有属性,还可以有方法。猪这一对象,吃了睡睡了吃,它的一个本事就是长膘。长膘就是猪对象的一个方法(之一):

    let 猪 = {
            姓名: '阿黑',
            月龄: 8,
            体重: 250,
            体长: 1.02,
            身高: 0.75,
            性格: '憨厚老实',
            爱好: '吃苹果',
            长膘: function(食物) {
                            this.体重 += 食物 * 0.2;
                            return this.体重;
                    },
    };

    对象方法的表达和属性的表达一脉相承,不同的是,方法的键值不再是简单的数据描述,而是一个函数。这个函数“翻译”成普通函数是酱紫(只是为了帮助理解):

            function 长膘(食物) {
                    this.体重 += 食物 * 0.2;//每吃下一公斤的食物会长0.2公斤的嘎嘎
                    return this.体重;
            }

    调用猪对象的方法,和调用猪对象的属性也大同小异。当我们给阿黑投食100公斤,它的体重是多少呢?

    console.log(猪.长膘(100)); // --> 270


    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-20 19:59 | 显示全部楼层
    调用对象属性,可以直接得到结果,这个真不错
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-20 20:00 | 显示全部楼层
    那么,这些属性的是如何设定的呢。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-20 20:42 | 显示全部楼层
    红影 发表于 2022-7-20 19:59
    调用对象属性,可以直接得到结果,这个真不错

    面向对象一直是各类编程语言的努力方向,JS也不例外
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-20 20:42 | 显示全部楼层
    红影 发表于 2022-7-20 20:00
    那么,这些属性的是如何设定的呢。

    根据情况设定
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-20 22:49 | 显示全部楼层
    马黑黑 发表于 2022-7-20 20:42
    面向对象一直是各类编程语言的努力方向,JS也不例外

    只是,总觉得JS好难的。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-20 22:49 | 显示全部楼层

    嗯嗯,知道了。还以为也是在语句里设定的呢。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-20 22:56 | 显示全部楼层
    红影 发表于 2022-7-20 22:49
    只是,总觉得JS好难的。

    入门后就会觉得不是太难,但是用的好的确又是很不容易
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-20 22:57 | 显示全部楼层
    红影 发表于 2022-7-20 22:49
    嗯嗯,知道了。还以为也是在语句里设定的呢。

    那肯定是要用语句来表达的。你要构建一个单车的方法,例如往哪个方向骑行,就需要在对象里构建函数。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-21 07:36 | 显示全部楼层
    对象小结:

    声明一个对象,与声明一个变量一样,用 let、var 和 const 关键字:

        let a = 10; // 变量
        let pig = {}; // 对象

    对象有属性和方法,每一个属性由 key:value 即(键名:键值)组成键值对,键值对结束要加上逗号:

        let pig = {
            name: '阿黑',
            weight: 250,
            color: '黑色',
        }

    对象的属性就是对象的变量,所以对象是围绕着对象的变量的集合。对象的方法也可以视为变量,是特殊的变量(JS行内有一句话叫函数即变量,参考箭头函数的构造),由函数构成:

        let pig = {
            name: '阿黑',
            weight: 250,
            color: '黑色',
            grow: function(food) {
                this.weight += food * 0.2;
                return this.weight;
            },
        }


    (注意观察红色代码结束处)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-21 21:21 | 显示全部楼层
    马黑黑 发表于 2022-7-20 22:56
    入门后就会觉得不是太难,但是用的好的确又是很不容易

    至少目前还是觉得挺难的。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-21 21:21 | 显示全部楼层
    马黑黑 发表于 2022-7-20 22:57
    那肯定是要用语句来表达的。你要构建一个单车的方法,例如往哪个方向骑行,就需要在对象里构建函数。

    嗯嗯,知道了。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-21 21:43 | 显示全部楼层
    红影 发表于 2022-7-21 21:21
    至少目前还是觉得挺难的。

    这也正常,毕竟从来没有系统学习过
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-22 19:46 | 显示全部楼层
    马黑黑 发表于 2022-7-21 21:43
    这也正常,毕竟从来没有系统学习过

    只能跟在黑黑后面一点点学起
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-22 20:05 | 显示全部楼层
    红影 发表于 2022-7-22 19:46
    只能跟在黑黑后面一点点学起

    这不系统,东一点西一点的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-7-22 20:54 | 显示全部楼层
    马黑黑 发表于 2022-7-22 20:05
    这不系统,东一点西一点的

    也不错啊,这样学着不累
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2022-7-22 20:55 | 显示全部楼层
    红影 发表于 2022-7-22 20:54
    也不错啊,这样学着不累

    开心就好
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-16 21:48 , Processed in 0.081340 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表