函数其他

一.对象

 <script>

        // 对象就是拥有一组属性和方法的集合

        // 如果 a.b ,那么a就是对象,b是a的属性

        // 如果 a.c(),那么a就是对象,c是a的方法

        /* let no = 1001

        let name = '张三'

        let age = 20

        let sex = '女' */

        // 定义对象的第一种种方式:采用字面量赋值方式直接定义

        let stu1 = {

            // 属性名:属性值的方式,定义属性

             no : 1001,

             name : '张三',

             age : 20,

             sex : '男',

            //  定义学生的方法

            study:function(){

                console.log('每天学习8小时');

            },

            play:function(){

                console.log('每天玩8小时');

            },

        }

        console.log(stu1);

        // 调用对象身上的属性

        console.log(stu1.name);

        console.log(stu1.age);

        // 调用身上的方法

        stu1.study()

        stu1.play()

    </script>

二.使用对象制作计算器

  <script>

        // 定义一个计算器对象

        let calc = {

            // 定义计算器的属性

            num1: 0,

            num2: 0,

            jia: function () {

                // 在对象的方法中,获取读取其它的成员,要通过this

                console.log(`${this.num1}+${this.num2}=${this.num1 + this.num2}`);

            },

            // 在ES6中,对象的方法,也可以采用下面的样式

            jian() {

                console.log(`${this.num1}-${this.num2}=${this.num1 - this.num2}`);

            },

            chen() {

                console.log(`${this.num1}*${this.num2}=${this.num1 * this.num2}`);

            },

            chu() {

                console.log(`${this.num1}/${this.num2}=${this.num1 / this.num2}`);

            },

        }

        // 给计算器对象的两个属性赋值

        calc.num1 = 200

        calc.num2 = 20

        calc.jia()

        calc.jian()

        calc.chen()

        calc.chu()

    </script>

三.分页方法

1.第一种

 <script>

        // 定义一个数组,里面初始化100条数据

        let arr = []

        for(let  i=0;i<100;i++){

            arr.push('数据'+(i+1))

        }

        // 定义一个分页方法,方法的三个参数分别是:原始数组,页码,每页数量

        function pageDate(arr,pageIndex,pagesize){

            // 思路:就是对原始数组中的数据,做截取

            // 定义截取数据的起始位置

            let start = (pageIndex-1)*pagesize

            // 定义截取数据的结束位置

            let end = start+pagesize

            // 根据起始下标和结束下标,从原始数值中截取对应的数据并返回

            return arr.slice(start,end)

        }

        // 表示每页10条数据,返回第3页

         let arr2 = pageDate(arr,3,10)

         console.log(arr2);

        //  表示1每页15条数据,返回第5页

         let arr3 = pageDate(arr,5,15)

         console.log(arr3);

    </script>

四.构造函数

 <script>

        // 构造函数:首先是个函数,这个函数用来创建出对象

        // 如果使用构造函数创建出对象,使用new关键字

        // 可以使用系统构造函数Object创建一个对象

        let obj1 = new Object()

        console.log(obj1);

        let obj2 = {}

        console.log(obj2);

        console.log('------------------------------------------');

        // 多数情况下,都是先定义一个构造函数再通过自定义的构造函数创建出对应的对象

        function Student(no, name, age, sex) {

            // 这里的this,用于构造函数定义属性

            this.no = no

            this.name = name

            this.age = age

            this.sex = sex

            this.sayHi = function(){

                console.log(`大家好!我叫${this.name}`);

            }

        }

        // 通过类(构造函数)可以创建出无数个对象

        let s1 = new Student(1001,'张三',20,'男')

        console.log(s1);

        s1.sayHi()

        let s2 = new Student(1002,'李四',22,'nv')

        console.log(s2);

        s2.sayHi()

        let s3 = new Student(1003,'王五',24,'男')

        console.log(s3);

        s3.sayHi()

       /*  let s1 = {

             no:1001,

             name:'张三',

             age: 20,

             sex:'男'

         }

         let s2 = {

             no:1002,

             name:'李四',

             age: 22,

             sex:'女'

         }

         let s3 = {

             no:1003,

             name:'王五',

             age: 24,

             sex:'男'

         } */

    </script>

五.构造函数的练习

定义一个棋子类,里面有四个属性,分别是:名称,颜色,X轴位置,Y轴位置

比如:红色的马,当前位置是(X=15,Y=11)

里面有两个方法:分别是:

1.显示当前棋子在什么位置

2.移动方法,该方法,需要传两个参数,就是X轴和Y轴的新坐标,移动方法执行完后,在方法的最下面,调用一次显示当前位置的方法。

 <script>

        // 定义一个棋子构造函数(类)

        function Chess(name,color,x,y){

            // 定义属性

            this.name=name

            this.color=color

            this.x=x

            this.y=y

            // 定义方法

            // 显示当前位置的方法

            this.show=function(){

                console.log(`${this.color}${this.name}.当前位置是x:${this.x}Y:${this.yw}`);

            }

            // 移动棋子的方法

            this.move=function(x,y){

                this.x=x

                this.y=y

                // 位置更新后,重新调用显示当前位置的方法

                this.show()

            }

        }

        // 创建一个红马

        let redHorse = new Chess('马','红',15,1)

        redHorse.show()

        redHorse.move(13,2)

        // 创建一个黑车

        let blackCar =  new Chess('车','黑',1,1)

        blackCar.show()

        blackCar.move(5,1)

    </script>

六.arguments参数对象

<script>

        // 方法在定义时,设置了3个形参

        function fun1(a,b,c){

            console.log(a,b,c);

            // arguments对象里面保存着方法里面所有的参数,都可以通过下标来获取,也可以写循环

            console.log(arguments);

            console.log(arguments[3]);

            console.log(arguments[4]);

            console.log('---------------------------for循环---------------------------');

            for(let i=0;i<arguments.length;i++){

                console.log(arguments[i]);

            }

            console.log('-------------------------------------------------------------');

            // 注意:arguments对象里面有一个callee方法,该方法指向当前方法本身。

            console.log(arguments.callee);

        }

        // 方法在实际调用时,传递了5个实参

        // 在方法里面,另外两个参数值就可以用arguments来获取

        fun1(100,200,300,400,500)

        console.log('===============================================');

        // 计算100以内所有数的累加

        function calc(num){

            if(num===1){

                return num

            }

            // 因为arguments。callee就是指向当前方法本身

            // 因为这样做的好处是:防止外部方法修改后,导致递归失效。

           let sum = num + arguments.callee(num-1)

            return sum

        }

        console.log(calc(100));

    </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容