专项练习22

目录

一、选择题

    1、如下代码片段的运行结果是

    2、执行以下程序,下列选项中,说法错误的是()

二、编程题

    1、以boolean的形式返回字符串参数中是否包含数字

    2、将第二个参数插入第一个参数数组的头部,并且以数组的形式返回


一、选择题

1、如下代码片段的运行结果是
var obj ={a:1,b:function () {alert(this.a)}}; 
var fun =obj.b; 
fun();

A、弹出a

B、弹出1

C、弹出undefined

D、什么也看不到

正确答案:C        你的答案:B

解析:

var b = function(){ alert(this.a); }
obj = { a:1, b:b };// 把函数独立出来
var fun = obj.b;//存储的是内存中的地址 fun();

(1)fun 是 obj.b 的一个引用,引用的是 b 函数本身,因此 fun() 是一个不带任何修饰的函数调用,this 指向 window

(2)一句话:当前的方法属于谁,this 就是谁,fun() 属于 window,所以 this 指向 window


2、执行以下程序,下列选项中,说法错误的是()
class Phone{
  constructor(brand){
    this.brand = brand;
}
  call(){}...①
}
function playGame(){console.log("我可以打游戏")};
function photo(){console.log("我可以拍照")};
console.log(typeof Phone);...②
var p = new Phone('华为');
console.log(p.brand);...③

A、①式的call方法是定义在类Phone的prototype对象上

B、②式输出结果为Object

C、③式输出结果为华为

D、若想一次性给类添加playGame和photo两个实例方法,可以使用Object.assign(Phone.prototype,{playGame,photo})

正确答案:B        你的答案:D

解析:

(1)选项解释

①A选项:类的所有实例方法均定义在类的原型对象上,在类内定义的实例方法和在类的原型对象上定义方法是等价的,call() 是实例方法

②B选项:的本质是函数,ES6 中的类可以视为 ES5 中构造函数的另一种写法,所以②式的输出结果为 function

③C选项:p 为类的实例对象,该对象有一个属性brand,属性值为华为

④D选项:使用了对象的浅拷贝,Object.assign(obj, options) 是基本使用方式,options 中的对象会浅拷贝一份到 obj 中,文中的 obj 是 Phone 的原型


二、编程题

1、以boolean的形式返回字符串参数中是否包含数字

解析:

(1)search()方法结合正则表达式

<script>
    let str = 'sdh'
    function _search(str){
        return str.search(/\d/) === -1 ? false:true
    }
    console.log(_search(str));
</script>

(2)Array.from().some()及isNaN()方法

<script>
    let str = ''
    function _search(str){
        return Array.from(str).some(el => isNaN(el) === false)
    }
    console.log(_search(str));
</script>
  • Array.from —— 对一个类似数组或可迭代对象创建一个新的浅拷贝的数组实例
  • Array.some —— 测试数组中是否有元素通过了被提供的函数测试,返回boolean型值
  • isNaN —— ①是否Number类型 ②尝试转换为数值 ③判断是否NaN。非数值-true;数值-false

2、将第二个参数插入第一个参数数组的头部,并且以数组的形式返回

解析:

(1)unshift()方法:数组的头部插入,会改变原数组

<script>
    let array = [1,2]
    let value = 3
    function _unshift(array,value){
        array.unshift(value)
        return array
    }
    console.log(_unshift(array,value));
</script>

(2)reverse()数组反向和push()数组添加,会改变原数组

<script>
    let array = [1,2]
    let value = 3
    function _unshift(array,value){
        array.reverse().push(value)
        return array.reverse()
    }
    console.log(_unshift(array,value));
</script>

(3)splice()方法,会改变原数组

<script>
    let array = [1,2]
    let value = 3
    function _unshift(array,value){
        array.splice(0,0,value)
        return array
    }
    console.log(_unshift(array,value));
</script>

(4)解构赋值,创建新数组

<script>
    let array = [1,2]
    let value = 3
    function _unshift(array,value){
        let newArr = [value,...array]
        return newArr
    }
    console.log(_unshift(array,value));
</script>

猜你喜欢

转载自blog.csdn.net/qq_51478745/article/details/131605393