一、js的内置对象有哪些?列举一下arry和string的常用方法?
JavaScript常见的内置对象有Object,Math,String,Array,Number,Function,Boolean,JSON等,其中Object是所有对象的基类,采用了原型继承方式.
String:charAt();charCodeAt();indexOf();match();replace();search();slice();toUpperCase();toLowerCase();等方法
Array:shift();unshift();pop();push();concat();reverse();splice();slice();等方法
二、js中深拷贝和浅拷贝的区别?
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
深拷贝的方法:
1、递归拷贝
2、使用Object.create()方法
3、jquery有提供一个.extend也可以实现
4、函数库lodash,也有提供cloneDeep用来实现
三、说说你对闭包的理解
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念
闭包有三个特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
四、为什么不建议在JavaScript中使用innerHTML?
通过innerHTML修改内容,每次都会刷新,因此很慢。在innerHTML中没有验证的机会,因此,更容易在文档中插入错误代码,从而使网页不稳定
五、new操作符具体干了什么呢?
1、创建一个空对象。
2、并且this变量引用该对象,
3、该对象继承该函数的原型(更改原型链的指向)
4、属性和方法被加入到this引用的对象中
5、新创建的对象由this所引用,并且最后隐式的返回this
六、call()和apply()的区别和作用?
作用:都是在函数执行的时候,动态改变函数的运行环境(执行上下文)
call和apply第一个参数都是改变的运行环境对象
区别:
call从第二个参数开始,每一个参数会依次传递给调用函数
apply第二个参数是数组,数组的每一个成员会依次传递给调用函数
例子:func.call(func1,var1,var2,var3)
对应的apply写法为:func.apply(func1,[var1,var2,var3])