常见问题/知识点记录(一)

一 call apply bind

相同点:
都可以改变函数内部的this指向
区别点:

  1. call和apply会调用函数 并且改变函数内部this指向
  2. call和apply传递的参数不一样 call传递参数 arg1,arg2…形式 apply是数组形式
  3. bind不会调用函数 可以改变this指向 传值方式类似call

主要应用场景:

  1. call经常做继承
  2. apply经常跟数组有关系 比如借助于数学对象实现数组最大最小值
  3. bind不调用函数 但会改变this指向 比如改变定时器的this指向

call和apply哪个性能更好一些?
两个传参数 <=3 个的时候 性能差不多 >3 的时候 call的性能比apply性能相对要好一些
一般后期开发 使用call多一点

call–前面的参数值作用域对象 后面的参数可以是多个
apply–第一个参数是作用域对象 第二个参数必须是数组
bind–绑定一个作用域 但不是立即执行

var b = a.fn
var c = b.bind(a,1,2)
c() // c的作用域是a

二 什么是高阶函数

一. 函数作为参数
二. 函数作为返回值

三 箭头函数与普通函数(function)的区别是什么?

  1. 箭头函数语法比普通函数更加简洁
  2. 箭头函数没有自己的this 它里面的this继承函数所属上下文中的this call和apply等任何方法都无法改变this指向
  3. 箭头函数中没有arguments(类数组) 只能…arg获取传递的参数集合
  4. 箭头函数不能被new执行 因为箭头函数没有自己的this和prototype

四 函数的不同调用方式的this指向

  1. 普通函数调用
fn();// this指向window
  1. 方法调用
obj.fn(); // this指向obj
  1. 作为构造函数调用 构造函数内部的this指向由该构造函数创建的对象
  2. 作为事件处的处理函数
btn.onClick=function(){}; // 触发该事件的对象
  1. 作为定时器的参数
setInterval(function(){},1000) // this指向window

总结:函数内部的this不是书写的时候决定的 是由函数调用的时候来确定其指向的

改变this指向
this 指针 当前对象(作用域对象) 没有调用者就是window

  1. 箭头函数
  2. 声明一个变量保存指针 var that = this
  3. call 执行一个函数 函数名.call(xx) 将函数放到特定作用域对象中执行
  4. apply 函数名.apply(作用域对象)

五 严格模式 strict mode

  1. 消除了js语法的一些不合理 不严谨之处 较少了一些怪异行为
  2. 消除代码运行的一些不安全之处 保证代码运行的安全
  3. 提高编译器效率 增加运行速度
  4. 禁用了在ECMAScript的未来版本中可能会定义的一些语法 为未来新版本Javascript做好铺垫 如保留字如 class export extends import super 不能做变量名
    开启严格模式
'use strict' // 下面就会安装严格模式执行代码

严格模式下的 变量

  1. 必须先声明 再使用
  2. 不能随意删除已经声明的变量

严格模式this指向问题

  1. 全局作用域中的this是undefined
  2. 如果构造函数不加new调用 this指向的是undefined
  3. 定时器this还是指向window

函数的变化

  1. 不允许函数的参数重名
  2. 不允许在非函数代码块内声明函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统常见知识点包括以下内容: 1. 文件系统:Linux使用一种层次化的文件系统结构,最常见的文件系统是ext4。此外,还有其他文件系统如FAT32、NTFS等。 2. 命令行界面:Linux系统主要通过命令行界面进行操作和管理。常用的命令行工具包括ls(列出目录内容)、cd(切换目录)、cp(复制文件)、mv(移动文件)、rm(删除文件)等。 3. 用户和权限管理:Linux系统通过用户和权限管理来保护系统的安全。每个用户都有独立的用户名和密码,并且可以被分配不同的权限。常用的用户和权限管理命令包括useradd(添加用户)、passwd(修改密码)、chmod(修改文件权限)等。 4. 软件包管理:Linux系统通过软件包管理器来管理安装和卸载软件。常见的软件包管理工具有apt(Debian/Ubuntu)、yum(Red Hat/CentOS)等。 5. 网络配置:Linux系统可以进行网络配置,包括设置IP地址、子网掩码、网关等。常用的网络配置命令包括ifconfig(配置网络接口)、ping(测试网络连接)等。 6. 进程管理:Linux系统可以管理运行在系统中的进程。常见的进程管理命令有ps(显示进程信息)、top(动态显示进程状态)等。 7. Shell脚本编程:Linux系统支持Shell脚本编程,通过编写Shell脚本可以实现自动化任务和批量操作。 8. 日志管理:Linux系统会生成各种日志文件,用于记录系统的运行状态和事件。常用的日志管理命令有tail(查看日志文件内容)、grep(搜索指定内容)等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值