JavaScript函数进阶(三)

函数调用

1.构成函数主体的JavaScript代码在定义之时并不会执行,只有调用该函数时,它们才会执行。

2.有4种方式来调用JavaScript函数:
①作为函数
②作为方法·作为构造函数
③通过它们的call()和apply()方法间接调用

3.方法调用
①—般情况下,与普通函数的使用方式一致。
·方法是属于某个特定对象才能调用的函数。

②方法调用和函数调用有一个重要的区别,即︰调用上下文。
·属性访问表达式由两部分组成∶一个对象(o)和属性名(m)。在像这样的方法调用表达式里,对象o成为调用上下文,函数体可以使用关键字this引用该对象。

  let calculator = {
      oper1: 10,
      oper2: 20,
      add: function () {
        this.result = this.oper1 + this.oper2;
      },
    };
    calculator.add();
    console.log(calculator.result);

调用上下文
关键字this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this

   let obj = {
      x: 10,
      fn: function () {
        this.x++;
        function ff() {
          console.log(this.x);
        }
        ff();
      },
    };
    obj.fn();
  
   let obj = {
      x: 10,
      fn: function () {
        this.x++;
        let self = this;
        function ff() {
          console.log(self.x);
        }
        ff();
      },
    };
    obj.fn();

构造函数调用
·如果函数或方法调用之前带有关键字new,它就是构造函数调用。
·构造函数调用和普通的函数调用以及方法调用在实参处理、调用上下文和返回值方面都有不同。

·构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性。
·构造函数试图初始化这个新创建的对象,并将这个对象用做其调用上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

·构造函数通常不使用return关键字,它们通常初始化新对象,当构造函数的函数体执行完毕时,它会显式返回该对象。

  function Car(name) {
      this.name = name;
      return null;
    }

间接调用
·使用函数对象的call()和aapply()方法可以间接调用函数。
·第一个参数指定调用上下文(函数内部的this),第二个参数给函数传递参数。

let obj1 = {
    x: 100,
    y: 200,
    show: function (n = 1, m = 1) {
      return `(${this.x * n},${this.y * m})`;
    },
    concat: function () {
      let r = [this.x, this.y];
      for (let a of arguments) r.push(a);
      return r;
    },
  };
let obj2 = { x: 111, y: 222 };
let r1 = obj1.show.call(obj2);
let r2 = obj1.show.call(obj2, 10, 100);
console.log(r1, r2);
let r3 = obj1.concat.call(obj2, 11, 22, 33);
let r4 = obj1.concat.apply(obj2, [2, 3, 4, 5]);
console.log(r3, r4);

⑥回调函数
·被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。

  let arr = [1, 22, 13, 4, 5];
arr.sort(function (a, b) {
  return a - b;
});
arr.sort((a, b) => b - a);
let data = {
    x: 10,
    y: 20,
    show: function (how) {
      how(this.x, this.y);
    },
  };
  data.show(function (a, b) {
    console.log(`(${a},${b})`);
  });
  data.show((a, b) => {
    console.log(`${a}->${b}`);
  });
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript核心进阶:阳波PDF是一本面向已经掌握基础JavaScript知识的读者而设计的进阶书籍。此书主要内容涵盖了JavaScript核心的高级特性和使用技巧,旨在帮助读者更深入地理解JavaScript并提升自己的编程能力。 首先,该书的作者是阳波老师,他在JavaScript领域有丰富的经验和深厚的理论基础。他通过清晰、详细的讲解及代码实例,帮助读者逐步了解和掌握JavaScript中的高级概念,如闭包、原型链、作用域等。 除了核心概念,该书还介绍了一些实用技巧和最佳实践,例如模块化开发、异步编程、优化性能等。这些技巧可以帮助读者更高效地编写JavaScript代码,提升应用的质量和响应速度。 此外,书中还包含了一些实战案例,通过具体的项目实例,读者能够学习到如何将JavaScript应用于实际项目中,发挥其强大的功能和灵活性。 总之,JavaScript核心进阶:阳波PDF是一本帮助已经掌握基础JavaScript知识的人提升自己的必备读物。读者能够通过阅读本书,进一步拓展对JavaScript的理解,掌握高级特性和实用技巧,并将其应用于实际项目中,从而提升编程能力和项目质量。 ### 回答2: JavaScript是一种广泛应用于Web开发的编程语言,对于想要深入了解该语言的开发者来说,掌握其核心进阶知识是至关重要的。而《JavaScript核心进阶》是一本由阳波编写的PDF电子书,该书的内容涵盖了JavaScript的核心进阶知识。 《JavaScript核心进阶》这本书包含了丰富的内容,主要分为了四个部分。第一部分介绍了Javascript的基础知识,包括变量、数据类型、运算符、表达式等。第二部分涵盖了Javascript函数和作用域,其中讲解了函数的定义、调用、参数、闭包等概念。第部分讲解了Javascript的对象、原型和继承,重点介绍了原型链的概念和使用方法。第四部分介绍了一些高级主题,如模块化编程、异步编程、错误处理等。此外,该书还包含了许多实例和练习,帮助读者加深理解和巩固知识。 在阅读《JavaScript核心进阶》这本书后,读者将能够更好地理解JavaScript的核心概念和技巧。他们将学会如何使用适当的语法和设计模式来编写更加高效和可维护的代码。同时,这本书还帮助读者扩展了对JavaScript的应用范围,使他们能够处理更加复杂和高级的开发任务。 总而言之,《JavaScript核心进阶》是一本适合有一定JavaScript基础的开发者进行学习的书籍。它提供了大量的案例和实践,帮助读者深入理解JavaScript的核心知识。通过阅读这本书,读者将能够掌握JavaScript的核心进阶知识,提升自己的编程技能,实现更加高效和可靠的Web开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值