js 对象和回调函数

对象(object)

对象的作用

  • 一个变量存储多个数据

对象与数组的区别

  • L数组具有顺序性,但没有描述性,二对象相比数组描述性更强。

对象的语法

let 对象名 = {属性名:属性值,属性名:属性值}
let obj = {
    name: '犬夜叉',
    equipment: '铁碎牙',
    skill: '爆流破',
    girlfriend: '戈薇'
 };
     console.log(obj['name']);
     // 对象的下标是字符串,所以必须要有引号
     
     //对象还有另外一种访问方式:.语法 对象.属性名 (属性名不需要加引号)
     console.log(obj.name)

对象的增删改查

定义一个对象
let obj = {}

增加数据:数组法和点语法
obj['name'] = '詹姆斯'; //增加一个name属性
obj.age = '36';  //点语法,属性名不用加引号

查找数据
console.log(obj['name']) //取出name的值
console.log(obj.age)     //取出age的值

改数据(已经有数据的情况下)
obj['name'] = '韦德'; //修改name属性的值
obj.age = '39';  //修改age的值

删除数据
delete obj['name'] //删除name属性
delete obj.age  //修改age属性
  • 注意:属性名也可以为数字,但是在访问对象时不能使用点语法,只能使用数组法:console.log(obj [0] )

对象遍历

  • 数组的遍历思路:一个一个取出数组元素的下标
  • 对象遍历:对象没有length属性,普通for循环无法实现
  • 对象遍历:挨个取出下标,存入到某个变量中:对象通过变量下标来访问具体的属性值
//定义对象
let obj = {
    name: '矮人狙击手', 
    skill: '瞄准', 
    special: '腿短没位移',
     need: '辅助跟随'
}
forlet i in obj){
    console.log(obj.i);// 找属性名叫i的属性
    console.log(obj['i']);  // 带了引号:i就是个字符串 === obj.i
     console.log(k, obj[k]);

对象的访问

  • 无论何时何地,只要访问属性,就必须前面有对象
  • 属性的访问必须由对象调用
let obj = {
            heroName: '鲁班七号',
            heroSkill: '飞碟',
            sf: function () {
            document.write(`${obj.heroName} 释放 ${obj.heroSkill} 技能`);
            document.write(`${this.heroName} 释放 ${this.heroSkill} 技能`);
             // JS提供了一个东西:只要有function定义函数,里面就会产生一个变量:this,代表当前调用当前函数的对象
            obj.sf( ); // obj调用sf方法:里面的this代表obj这个对象
            }
        }

函数

  • 函数:如果有形参,调用的时候要传入实参,否则形参不会被赋值:值就是undefined
function test(a, b) {
         console.log(a, b);
}
    test();    // 输出两个undefined

arguments关键字

  • arguments关键字是系统自动生成的,用来获取所有的参数
  • arguments长的像数组,但是又不是数组:伪数组
  • 伪数组:可以当做数组用(用下标访问),使用for循环遍历

用arguments求最大值

 //  不限参数的max函数
 let m = -Infinity;      // 空擂主思想

 for (let i = 0; i < arguments.length; i++) {
        if (arguments[i] > m) {
          m = arguments[i];
      }
 }
     return m;
}
        console.log(max(1, 2));
        console.log(max(1, 2, 3, 4));

        // Math.max()

        console.log(Math.max(1, 2, 3, 4, 5));

        // arguments的应用
        // 不确定实参的数量的时候,就用arguments

arguments的应用场景

  • 不确定实参的数量的时候,就用arguments

自调用函数

  • 将函数写在另外一个函数的调用位置
  • 存在价值:将数据定义在自调用函数内部:外部无法修改(即使重名也不影响):保证数据的安全(沙箱:为了保证代码和数据安全)
  • 特点:函数里面的代码会自动执行,执行1次(再也无法执行)(执行完就回销毁内存:不占用内存)
function aa(){  //自调用函数即使有名:也没有意义,外部不能调用
    let res = 1;
    console.log(les)   
})()

回调函数

  • 回调函数:有名函数
  • 函数表达式回调
  • 匿名回调(最常使用)

在这里插入图片描述

有名回调(函数表达式回调)和匿名回调的区别

  • 有名回调:可以多次用,代码会一直在内存存在(优点:多次调用,缺点:代码长期占用内存)
  • 匿名回调:只能用1次,如果要再用,代码复制一份(优点:用后即焚,缺点:只能调用1次)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值