首页 经验

前端面试 js篇

时间: 2024-10-21 12:14:16

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

25.toString 方法

把对象直接转换成字符串

29.原型链

当js试图得到一个对象的属性时,会先去这个对象的本身去寻找,如果这个对象本身没有找到这个属性,那么js就会去它构造函数的’prototype’属性中去寻找,也就是去’proto‘中寻找,如果’prototype’属性本身中依旧没有找到,’prototype’中依旧有一个‘proto’。

原型可以解决什么问题:

对象共享属性和方法

谁有原型:

函数拥有:prototype

对象拥有:proto

对象查找属性或者方法的顺序:

先在对象本身查找–>构造函数中查找–>对象的原型中查找–>构造函数的原型中查找–>当前原型中查找

原型链的最顶端是null

30.闭包

闭包就是指有权访问另一个函数作用域中的变量的函数

MDN 上面这么说:闭包是一种特殊的对象。

闭包的作用域链包含着它自己的作用域,以及包含它的函数的作用域和全局作用域。闭包的注意事项

通常,函数的作用域及其所有变量都会在函数执行结束后被销毁。但是,在创建了一个闭包以后,这个函数的作用域就会一直保存到闭包不存在为止。

我们首先知道闭包有3个特性:

①函数嵌套函数

②函数内部可以引用函数外部的参数和变量

③参数和变量不会被垃圾回收机制回收

优点:

①保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突

②在内存中维持一个变量,可以做缓存(但使用多了同时也是一项缺点,消耗内存)

③匿名自执行函数可以减少内存消耗

闭包的缺点就是常驻内存会增大内存使用量,并且使用不当很容易造成内存泄露。

如果不是因为某些特殊任务而需要闭包,在没有必要的情况下,在其它函数中创建函数是不明智的,因为闭包对脚本性能具有负面影响,包括处理速度和内存消耗。


上一个 webpack 文章列表 下一个 MVVM模式

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号