编程之路:从零到百度,探索有表现力的代码之嘎嘎嘎~

题目

现在有一个国王,想要组成一个由1000鸭子组成的合唱团,要求鸭子能够嘎嘎嘎的叫,但是最后只找有999只鸭子,该怎么办?请用代码实现。

分析

  1. 组成合唱团,则需要定义一个choir数组对象,来存放1000只鸭子;
  2. 定义一个鸭子duck对象,对象用对象字面量来表达;
  3. 鸭子能够嘎嘎嘎的叫,那么就需要定义一个方法sing;
  4. 要筛选能够嘎嘎嘎的叫的鸭子,那么就需要定义一个方法joinChoir来筛选鸭子;
  5. 通过for循环来实现999只鸭子加入choir;
  6. 只有999只鸭子,但是要求1000只鸭子,那么这个时候定义一个chicken对象,并定义一个方法sing,再加入choir;
  7. 合唱团组成,可以嘎嘎嘎嘎嘎嘎了。

代码

xml 复制代码
<script>
        /*
        国王 1000只鸭子合唱团 嘎嘎嘎的叫
        */
       //const 常量
       //赋值语句
       //js 弱类型,不需要像java要写明类型(用class声明对象)
       const choir=[];//合唱团 数组也是对象
       //对象字面量
       const duck={
        sing:function(){
            console.log('嘎嘎嘎');
        }
       }
      
       //学外语
       const chicken={
        sing:function(){
            console.log('嘎嘎嘎');
        }
       }

       //封装
       //加入合唱团有个流程
       function joinChoir(animal){
            //严谨性
            if(animal && typeof animal.sing=='function'){
                 choir.push(animal);
            }
            console.log('恭喜加入合唱团!');
       }
       for(let i=0;i<999;i++){
        joinChoir(duck);
       }
       joinChoir(chicken);
       console.log('合唱团已有'+choir.length+'位成员');
       if(choir.length===1000){
        console.log('报告国王,合唱团招聘完成!');
       }
      
    </script>

总结

  1. 组成合唱团(敏锐的逻辑能力);
  2. 加入合唱团应该写成一个方法(封装能力);
  3. 鸭子模型(深入的语言能力)(弱类型,不需要像java要写明类型(用class声明对象));
  4. JS不是传统的面向对象(class Duck),是基于原型式的面向对象();
  5. JS才是最面向对象的面向对象,除了简单数据类型的一切都是对象。

小知识

  • 如何区分不同类型的对象=>Object.prototype.toString.call()
  • 例如:
  1. Object.prototype.toString.call(choir)=>'object Array'
  2. Object.prototype.toString.call(duck)=>'object Object'
  3. Object.prototype.toString.call(sing)=>'object Function'
记得点点赞,发表意见评论哦~
相关推荐
threelab39 分钟前
Vue3 + Trilab:打造高扩展性三维可视化插件化框架实战指南
javascript·3d·webgl
阿正的梦工坊1 小时前
JavaScript 函数作用域详解——为什么函数外面访问不到里面的变量?
开发语言·javascript
黑臂麒麟1 小时前
React Hooks 闭包陷阱:状态“丢失“的经典坑
javascript·react native·react.js·ecmascript
1314lay_10071 小时前
Vue+C#根据配置文件实现动态构建查询条件和动态表格
javascript·vue.js·elementui·c#
SuperEugene1 小时前
Vue3 前端配置驱动避坑:配置冗余、渲染性能、扩展性问题解决|配置驱动开发实战篇
前端·javascript·vue.js·驱动开发·前端框架
gCode Teacher 格码致知1 小时前
Javascript提高:Math.round 详解-由Deepseek产生
开发语言·javascript
织_网1 小时前
Nest.js:Node.js后端开发的现代企业级解决方案,赋能AI全栈开发
javascript·人工智能·node.js
kyriewen1 小时前
可选链 `?.`——再也不用写一长串 `&&` 了!
前端·javascript·ecmascript 6
AnalogElectronic1 小时前
html+js+css实现七龙珠神龙召唤特效
javascript·css·html
Highcharts.js1 小时前
React 应用中的图表选择:Highcharts vs Apache ECharts 深度对比
前端·javascript·react.js·echarts·highcharts·可视化图表·企业级图表