JavaScript函数表达式、函数的递归调用、对象

一、函数表达式

将定义的函数赋给一个变量,通过变量完成函数的调用和参数传递(即函数是匿名的)

1.定义

var / let / const  变量名 = function(【参数】) {
	函数体语句
}

2.调用

变量名(【参数】)

        // 函数表达式:将一个匿名函数赋值给变量,函数的调用和参数传递是通过变量完成的
        let min = function (val1,val2) {
            if (val1 < val2) {
                return val1;
            } else {
                return val2;
            }
        }
        
		// 调用
        let t = min(12,25);
        console.log('最小数:'+t);

二、函数的递归调用

1.递归调用:函数自己调用自己(即在函数的函数体语句中调用自己)

2.递归算法:

(1)用递归方式解决问题的前提

        a.问题可以进行分解,分解得到的新问题的解法与原问题的算法相同

        8!--> 8 * 7!--> 7 * 6!  -->......2! --> 2 * 1!

        b.问题的分解过程必须有明确的结束条件

(2)递归的过程

        a.自上而下分解问题:得到最简单的问题的解

        b.自下而上回溯得到原问题的解

3.代码实现:

        //用递归函数计算 n!
        function fun(n) {
            // 1.明确递归结束的条件
            if (n == 1) {
               return 1;
            } else {
                // 2.继续分解
                return n * fun(n-1); //函数自己调用自己:在调用过程分解问题
            }
        }

        let t = fun(5);
        console.log(t);

练习1:定义一个函数,计算1+2+3+4+...+100的值

        // 定义一个函数,计算1+2+3+4+...+100的值
        function fun(n) {
            // 1.明确递归结束的条件
            if (n == 1) {
               return 1;
            } else {
                // 2.继续分解
                return n + fun(n-1); //函数自己调用自己:在调用过程分解问题
            }
        }

        let t = fun(100);
        console.log(t);

三、对象

1.什么是对象

对象是一种数据类型(复合数据类型),对象中包含了属性和方法

  1. 属性:表示对象的静态特征,使用方法为:对象名.属性名

  2. 方法(函数):宝石对象的行为(动态特征),使用方式:对象名.方法名(【参数】)

 2.对象的创建方式

   (1)使用字面量创建:{ }

        let / var / const 对象名 = { };

        let student = {
            no:'wn001',
            name:'马云',
            sex:'男',
            eat:function(){
                console.log('马云在吃包子');
            },
            sleep:function(){
                console.log('马云在睡觉');
            }
        }

        // 对象的属性和方法的使用
        console.log('姓名:',student.name);
        console.log('性别:',student.sex);
        student.eat();
        student.sleep();

说明:

  1. 保存数据的个数:键:值(key :value)称为“键值对”

  2. 在程序中也可以创建空对象:对象名:{},没有属性没有方法

  3. 给对象添加属性、方法

(2)通过Object来创建对象

  1. Object对象:是JavaScript中所有对象的基类

  2. 创建空对象:new Object()

        let obj = new Object();
        // console.log(obj);
        obj.name = '诸葛亮';
        obj.sex = '男';
        obj.info = function (m,n,t) {
            console.log('空城计');
        }
        console.log(obj);

(3)利用构造函数创建对象

        1.构造函数:是一个函数(定义方式和普通函数定义方式一样)

function 构造函数名 (【参数】) {
	this.属性名 = 属性值
	this.方法名 = function (【参数】){
		方法体语句
	}
}

建议:构造方法名的首字母大写

定义构造方法就是画图纸的过程,通过构造方法创建对象(new 构造方法名()) 就是根据图纸生成对象的过程

        2.通过构造方法创建对象:new 构造方法名(【参数】)

        3.对象使用属性和方法:

                对象名.属性

                对象名.方法名(【参数】)

//1.定义一个构造方法:包含name、sex、address三个属性,setName(name)、setSex(sex)、setAddress(address)三个方法
        function Student(){   //类似于画图纸
            this.name = '王昭君'
            this.sex = '女'
            this.address = '西安'

            this.setName = function(name){
                this.name = name
            }
            this.setSex = function(sex){
                this.sex = sex
            }
            this.setAddress = function(address){
                this.address = address
            }
        }

        //2.利用构造方法创建对象
         let s1 = new Student()  //强调:构造方法中的this代表当前创建的对象s1

         console.log('姓名:',s1.name)
         console.log('性别:',s1.sex)
         console.log('地址:',s1.address)

         let s2 = new Student()  //this代表s2
         s2.setName('西施')
         console.log('姓名:',s2.name)

强调:this代表的是由构造方法创建的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值