我面试碰到的高频问题

87 阅读2分钟

浅拷贝-深拷贝

浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。

深拷贝,在拷贝引用类型成员变量时,为引用类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                    

原文链接:blog.csdn.net/ltlt654321/…

原型和原型链

原型: JS中的对象包含了一个prototype的内部属性,这个属性所对应的就是该对象的原型。 原型链: 原型是一个对象,所以内部也有有一个原型,如此反复就是原型链,最上层的Object的原型是null # 闭包 闭包作用:正常函数执行完,内部声明的变量会被当垃圾回收处理,但闭包可以让作用域内的变量,在函数执行完毕后,依旧保持,反复使用 特点: ①上级作用域无法访问下级作用域数据 ②:函数内部return返回一个函数 ③:该函数间接访问内部数据,暴露给外部使用. function createCounter() { let count = 0; return function increment() { count++; console.log(count); }; } const counter = createCounter(); counter(); // 输出: 1 counter(); // 输出: 2

# caller跟callee callee:是函数arguments对象的一个属性,返回当前函数本身 caller:是当前函数名调用. ①:如果当前函数为全局,返回null②:如果当前函数为局部,全局函数调用,返回全局函数本身 # 前端apply、call、bind改变this总结 apply - call 相同:能调用函数,改变内部this指向 不同:apply是用数组匹配实参,call是用多个参数匹配实参 bind: 不会调用函数,但是可以改变函数内部的this指向【更常用】