作者:雨霖铃111130 | 来源:互联网 | 2023-10-10 17:31
1.下面这段JS程序的执行结果是: var a = [ 1 , 2 , 3 ] ; var b = a. slice ( ) ; b. push ( 4 ) ; console. log ( a)
解析:这里是输出a,答案是[1,2,3]
slice()方法返回新数组,不会改变原数组。它的参数有两个,第一个参数start,缺省为0,第二个参数end,缺省为末尾
2.以上代码,在浏览器中执行的结果是 var A = { n: 4399 } ; var B = function ( ) { this . n = 9999 } ; var C = function ( ) { var n = 8888 } ; B . prototype = A ; C . prototype = A ; var b = new B ( ) ; var c = new C ( ) ; A . n++ ; console. log ( b. n) ; console. log ( c. n) ;
解析: 如果不了解new操作符的原理解析,这里先了解下👉new操作符的原理解析 如果不了解原型/原型链/this指向,可以在下面博客了解下
this 如何理解JS原型 原型链
具体解析请看原题
3.单例模式 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例
4.在大数据量场景下,以下哪种js中字符串连接方式较为高效? 1. a += b2. a = a+ b3. Array. join ( ) 4. Array. push ( )
解析:答案3
以上效率问题仅存在于低版本浏览器ie7-及以下,现在浏览器基本解决此问题:
+的处理机制是:新建一个临时字符串,将新字符串赋值为a+b,然后返回这个临时字符串并同时销毁原始字符串,所以字符串连接效率较低。
Array.join() 不会新建临时字符串效率更高
5.this对象的理解 3. 在事件中,this 总是指向触发这个事件的对象
在事件中,this指向触发这个事件的对象, 特殊的是,IE中的attachEvent中的this总是指向全局对象Window
所以这句话错误👆
6.下面那些执行结果为true() a. 'foo' == new function ( ) { return String ( 'foo' ) ; } ; b. 'foo' == new function ( ) { return new String ( 'foo' ) ; } ; c. [ ] == 0 d. ! [ ] e. ! 0
解析:答案 b c e
构造函数始终会返回一个对象: 情况1:你写了return {a:xxx} 他就会返回你定义的这个对象 情况2:你没写return或者你return a 一个基本类型 这两种情况(没写或者return基本类型)它都会默认返回一个对象 a选项返回了一个String 所以构造函数会默认返回一个空对象 b选项返回一个String对象(因为有new 所以是字符串对象)所以构造函数就返回了这个String对象
在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false,至于[]转换为0,是当[]置于“=="运算符两侧的时候,将会进行隐式转换