JS高级第三天

1.函数的定义和调用

1.1 函数的定义方式

  1. 自定义函数 (命名函数)

    function fn(){}
    
  2. 函数表达式 (匿名函数)

    var fn = function(){}  
    
  3. 利用 new Function(‘参数1’,‘参数2’,‘函数体’);

    • 比较麻烦,用的比较少

    • 所有函数都是 Function 的实例(对象)

    • 函数也属于对象

1.2 函数的调用方式

  1. 普通函数

    function fn() {
    console.log('人生的巅峰');    
    }
     fn();
    
  2. 对象的方法

    var o = {
      sayHi: function() {
       console.log('人生的巅峰');  
      }
    }
    o.sayHi();
    
  3. 构造函数

    function Star() {};
    new Star();
    
  4. 绑定事件函数

    btn.onclick = function() {};   // 点击了按钮就可以调用这个函数
    
  5. 定时器函数

    setInterval(function() {}, 1000);  //这个函数是定时器自动1秒钟调用一次
    
  6. 立即执行函数

    (function() {
    console.log('人生的巅峰');    
    })();
    

2.this

2.1 函数内 this 的指向

调用方式this指向
普通函数调用window
构造函数调用实例对象 原型对象里面的方法也指向实例对象
对象方法调用该方法所属对象
事件绑定方法绑定事件对象
定时器函数window
立即执行函数window

2.2 改变函数内部 this 指向

  1. call()

    • 会直接调用函数

    • 放的是参数列表

    • 可以改变函数内部的 this 指向

    • 主要作用可以实现继承

  2. apply()

    • 会直接调用函数

    • 可以改变函数内部的 this 指向

    • 但他的参数必须是数组(伪数组)

    • apply 的主要应用:比如说我们可以利用 apply 借助于数学内置对象求最大值

      var arr = [1,66,3,99,4];
      var max = Math.max.apply(Math,arr);
      console.log(max);
      
  3. bind()

    • 不会直接调用原来的函数
    • 可以改变原来函数内部的 this 指向
    • 返回的是原函数改变this之后产生的新函数
    • 应用场景:比如定时器

3.严格模式 strict mode

3.1 什么是严格模式

约束程序员按照规范代码来进行编码

3.2 开启严格模式

在js文件或者函数的第一行写上==“use strict”;==

<script>
   "use strict"; //当前script标签开启了严格模式
</script>
//或者
(function (){
  //在当前的这个自调用函数中有开启严格模式,当前函数之外还是普通模式
    "use strict";
       var num = 10;
    function fn() {}
})();

3.3 严格模式中的变化

  1. 变量名必须先声明再使用
  2. 不能随意删除已经声明好的变量
  3. 严格模式下全局作用域中函数中的 this 指向的是undefined
  4. 严格模式下,如果 构造函数 不加new调用, this 会报错
  5. 定时器中的this指向的还是window
  6. 事件、对象还是指向调用者
  7. 严格模式下函数里面的参数不允许有重名
  8. 函数必须声明在最前面,不允许在if、for、while里面声明函数

更多严格模式参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode

4.高阶函数

高阶函数是对其他函数进行操作的函数,他接收函数作为参数将函数作为返回值输出

  • 高阶函数 - 函数可以作为参数传递

  • 最典型的就是作为回调函数

4.1 函数是一种数据类型

  • object复杂数据类型

  • 可以当做参数来传递 —回调函数

  • 可以当做返回值来返回

5.闭包

5.1 什么是闭包

一个作用域 访问到了 另一个作用域中的局部变量 就称之是闭包,这个变量所在的函数,就称之为 闭包函数。

5.2 闭包的作用

  • 延伸了变量的作用范围,增强了变量的生命周期
  • 缺点:导致内存泄漏 (内存泄露:本应该释放的内存空间没有得到及时释放,导致可用内存空间变小了)

6.递归

6.1 什么是递归?

  • 函数内部自己调用自己,这个函数就是递归函数
  • 注意:递归函数的作用和循环效果一样,由于递归很容易发生“栈溢出”错误(stack
    overflow),所以必须要加退出条件return。
【基于Python的大麦网自动抢票工具的设计与实现】 随着互联网技术的发展,网络购票已经成为人们生活中不可或缺的一部分。尤其是在文化娱乐领域,如音乐会、演唱会、戏剧等活动中,热门演出的门票往往在开售后瞬间就被抢购一空。为了解决这个问题,本论文探讨了一种基于Python的自动抢票工具的设计与实现,旨在提高购票的成功率,减轻用户手动抢票的压力。 Python作为一种高级编程语言,因其简洁明了的语法和丰富的第三方库,成为了开发自动化工具的理想选择。Python的特性使得开发过程高效且易于维护。本论文深入介绍了Python语言的基础知识,包括数据类型、控制结构、函数以及模块化编程思想,这些都是构建抢票工具的基础。 自动化工具在现代社会中广泛应用,尤其在网络爬虫、自动化测试等领域。在抢票工具的设计中,主要利用了自动化工具的模拟用户行为、数据解析和定时任务等功能。本论文详细阐述了如何使用Python中的Selenium库来模拟浏览器操作,通过识别网页元素、触发事件,实现对大麦网购票流程的自动化控制。同时,还讨论了BeautifulSoup和requests库在抓取和解析网页数据中的应用。 大麦网作为国内知名的票务平台,其网站结构和购票流程对于抢票工具的实现至关重要。论文中介绍了大麦网的基本情况,包括其业务模式、用户界面特点以及购票流程,为工具的设计提供了实际背景。 在系统需求分析部分,功能需求主要集中在自动登录、监控余票、自动下单和异常处理等方面。抢票工具需要能够自动填充用户信息,实时监控目标演出的票务状态,并在有票时立即下单。此外,为了应对可能出现的网络延迟或服务器错误,工具还需要具备一定的错误恢复能力。性能需求则关注工具的响应速和稳定性,要求在大量用户同时使用时仍能保持高效运行。 在系统设计阶段,论文详细描述了整体架构,包括前端用户界面、后端逻辑处理以及与大麦网交互的部分。在实现过程中,采用了多线程技术以提高并发性,确保在抢票关键环节的快速响应。此外,还引入了异常处理机制,以应对网络故障或程序错误。 测试与优化是确保抢票工具质量的关键步骤。论文中提到了不同场景下的测试策略,如压力测试、功能测试和性能测试,以验证工具的有效性和稳定性。同时,通过对抢票算法的不断优化,提高工具的成功率。 论文讨论了该工具可能带来的社会影响,包括对消费者体验的改善、对黄牛现象的抑制以及可能引发的公平性问题。此外,还提出了未来的研究方向,如增加多平台支持、优化抢票策略以及考虑云服务的集成,以进一步提升抢票工具的实用性。 本论文全面介绍了基于Python的大麦网自动抢票工具的设计与实现,从理论到实践,从需求分析到系统优化,为读者提供了一个完整的开发案例,对于学习Python编程、自动化工具设计以及理解网络购票市场的运作具有重要的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值