Javascript查漏补缺

Jul 20, 2023

js中的包装对象

在JavaScript中有三种包装对象,他们对应的构造函数分别是String,Number,Boolean
当我们使用原始类型调用toString方法的时候,原始类型会先通过其包装对象对应的构造函数转换成对象,然后用这个对象调用方法,调用方法之后,原始类型仍是原始类型,新创建的包装对象会被销毁

this 指向

JS(ES5)里面有三种函数调用形式:
只需要知道第三种调用形式,才是正常调用形式就很好理解this的指向了
至此我们的函数调用只有一种形式
这样,this 就好解释了
this的变态面试题

proto 和 prototype

要了解__proto__ 和 prototype需要了解原型和构造函数
new做了什么
  1. 不用创建临时对象,因为 new 会帮你做
  1. 不用绑定原型,因为 new 会帮你做(new 为了知道原型在哪,所以指定原型的名字为 prototype)
  1. 不用 return 临时对象,因为 new 会帮你做;
  1. 不要给原型想名字了,因为 new 指定名字为 prototype。
所以就可以推断出这样:
再看__proto__和prototype
notion image

简单手写

  1. trim
  1. bind

关于闭包

经典面试题:
闭包的特点:
  1. 能让一个函数维持住一个变量
  1. 但并不能维持住这个变量的值
  1. 尤其时变量的值会变化的时候
对象是穷人的闭包
  1. 对象可以维持住一个变量
  1. 如果一门语言不支持闭包,可以用对象代理
闭包是穷人的对象
如果一门语言不支持对象,可以用闭包代理

箭头函数

箭头函数对this与其他变量一视同仁,不会特殊对待。

关于var

var生命的变量会自动提升,全局下会自动挂载到window上。
 

JS内置的高阶函数

 
  1. bind.call
 
 

参考

 

Copyright © 2025 later

logo