js面试题知识点总结

1. JavaScript 中的 this 究竟指向谁,箭头函数的 this 有什么不同 普通函数

this 永远指向调用它的对象,new的时候,指向new出来的对 象。
箭头函数
箭头函数没有自己的 this,当在内部使用了this时,它会指向最近一层作用域内的 this

2. 深拷贝和浅拷贝的区别?如何实现?

两者的区别:一个对象浅复制后,是深层次的对象地址的复制,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会发生改变,而深复制的则是开辟了一个新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
JSON.stringify与JSON.parse可以实现深拷贝,还可以借用JQ的extend方法。

JSON.stringify与JSON.parse实现深拷贝

function deepClone(obj){
    let _obj = JSON.stringify(obj),
            objClone = JSON.parse(_obj);
    return objClone
}    
let a=[0,1,[2,3],4],
    b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

JQ的extend方法

let a=[0,1,[2,3],4],
    b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

如何判断一个变量是否为数组(isArray)

1instanceof
function isArray (obj) {
  return obj instanceof Array;
}
2、Array对象的 isArray方法
function isArray (obj) {
  return Array.isArray(obj);
}
3、Object.prototype.toString
function isArray (obj) {
  return Object.prototype.toString.call(obj) === '[object Array]';
}
原创文章 27 获赞 54 访问量 8222

猜你喜欢

转载自blog.csdn.net/qq1140037586/article/details/105591006