【粉笔刷题】第二回

在JavaScript中下面选项,关于this描述正确的是()
A在使用new实例化对象时, this指向这个实例对象
B当对象调用函数或者方法时,this指向这个对象。
C在函数定义时,this指向全局变量
D在浏览器下的全局范围内,this指向全局对象

this表示当前对象,this的指向是根据调用的上下文环境来决定的,默认指向window对象。

A选项,使用 new 实例化对象,在构造函数中的this指向实例化对象。所以A正确。

B选项,当对象函数调用,哪个对象调用就指向哪个对象。所以B不正确。

C选项,函数的定义位置不影响其this指向,this指向只和调用函数的对象有关。所以C不正确。

D选项,这个要分情况而定,例如对象函数调用某个对象的函数, 它指向当前对象。所以D不正确。

在这里插入图片描述

已知a为不为空的数组,且变量b===a. 
以下哪些方式可以清空数组, 使得a.length 与 b.length 都为 0; ()
A  b.len(0)
B  a = []
C  a.splice(0, a.length)
D  a = a.slice(a.length)

选项A,数组不存在len方法

选项B,数组为引用类型,仅仅修改a为空数组,那么b原来的引用不变,此时a和b的分别指向不同的数组。

选项C,splice的作用是删除数组的元素,通过a.splice(0, a.length)可以删除数组的全部元素,a和b的引用相同,所以最终的length都为0.

选项D,a.slice的作用是截取一个新的数组,虽然a.slice(a.length)截取出来的数组为空数组,但是,赋值该a后,相当于构造了一个新的空数组,并没有影响之前数组a与b之间的关系,b还是原来的数组。而splice方法是在a数组中进行元素的删除,而b数组与a数组此时相当于双向的绑定,无论a,b数组进行什么操作,都会影响到两个数组。
在这里插入图片描述

正则表达式 /a+(bab)?(caac)*/ ,下列选项中是该正则表达式的子集是
A  /(bab)(caca)/
B  /a(bab){2}(caac)*/
C  /a{2}/
D  /a+(bab){0,1}(ca)+(ca)/
E  /a(^bab)+(caac){1,}/
F  /a+(babc){2,}(acc){1,}

第一步:理解题目。

题目中的 a+ 代表 字符“a” 出现1次或者若干次,(bab)? 代表 字符 “bab” 出现一次或者0次,(caac)* 表示重复了“0或者若干次”的字符“caac”,即 字符“caac”出现0次或者若干次 。

若改题目为/李+太?白*/,可匹配:李、李太、李白、李太白、李李、李李太、李李白白、李李太白白等。

第二步:理解选项,选出子集。

A选项 /(bab)(caca)/ :匹配含有 “babcaca” 的字符串,不是题目中的 “babcaac”, 就好比是在找 “太星” 而不是"太白",而且没有a,所以该正则匹配的结果不可能出现在题目匹配的结果中,错误。

B选项 /a(bab){2}(caac)*/ :其中(bab){2} 表示 字符串“bab”必须出现2次,与题干正则显然不同,错误。

C选项 /a{2}/ :其中(a){2} 表示 字符“a”必须出现2次,就好比 “李李” ,属于题目匹配结果的子集,正确。

D 选项/a+(bab){0,1}(ca)+(ca)/ :前半部分正确,后半部分(ca)+(ca)明显错误。

E 选项/a(bab)+(caac){1,}/:正则本身有误,(bab)匹配以"bab"开头的字符串,但前面还有a,也就是匹配以a开头的字符串,两者矛盾。

F选项 /a+(babc){2,}(acc){1,}/:分组和区间值都不正确。
在这里插入图片描述

将数组 var a=[1,2,3] 变成数组 [ 4,3,2,1] 下面的方式正确的是? 
A  a.reverse().unshift(4)
B  a.push(4).reverse()
C  a.push(4); a.reverse()
D  a.splice(3,1,4).reverse()

js中:

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

A选项,a.reverse()后返回值即数组a变成[3,2,1],再使用unshift()方法在数组开头添加一个4,a数组就变成了[4,3,2,1]。注,unshift()返回新数组的长度,此处为4。正确。

B选项,push()方法返回新数组的长度,是一个number类型,不是数组,所以不能再用“.”操作符继续执行reverse()方法。错误。

C选项,正确。

D选项,splice()语法:arrayObject.splice(index,howmany,item1,…,itemX)。

由于a.splice(3,1,4)中的index为3,超过了数组a的下标,所以3后面的1也不会起作用。a.splice(3,1,4)会将4插入到数组a末尾。但splice()返回值是被删除项目的新数组,由于a.splice(3,1,4)并没有删除元素,所以返回的新数组为空,对空数组reverse()还是空。错误。
在这里插入图片描述

在ES6中提供了ArrayBuffer,TypeArray,DataView用于二进制的操作。

ArrayBuffer对象:代表原始的二进制数据。

TypedArray视图:用来读写简单类型的二进制数据。

DataView视图:用来读写复杂类型的二进制数据。
在这里插入图片描述

使用 for in 循环数组中的元素会枚举原型链上的所有属性,过滤这些属性的方式是使用**hasOwnPropert**y函数

for in可以获取object的所有属性,包括自定义属性以及原型链属性,hasOwnProperty只能获取自定义属性,无法获取原型链属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值