(前端面试)每日5题

1、ES6中Promise.race的作用及使用场景

        将多个Promise实例包装成一个新的Promise实例

let p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('p1成功');
    }, 2000)
});

let p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('p2成功');
    })
});

//Promise.race
const prace = Promise.race([p1, p2]);
//Promise.race区别于Promise.all: 只要实例中有一个先改变状态,就会把这个实例的参数的返回值传给prace的回调函数

//使用场景:请求超时
function request() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('请求成功');
        }, 2000)
    })
};

function timeout() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('网络不佳,请求超时')
        }, 3000)
    })
};

Promise.race([request(), timeout()]).then((value) => {
    console.log(value);
}).catch((reason) => {
    console.log(reason);
})

        2、JS中如何判断一个对象是空对象

//使用JSON自带的stringify方法判断
let obj = {};
if(JSON.stringify(obj) === "{}") {
    console.log("是一个空对象");
};

//使用Object.keys()来判断
let obj1 = {};
Object.keys(obj1);//返回一个数组
if(Object.keys(obj1).length == 0) {
    console.log("是一个空对象");
};

3、JS如何判断一个对象是否属于一个类

        类本身指向就是构造函数,类的数据类型就是函数

function Person(name) {
    this.name = name;
}
let obj = new Person('小飞');

        instanceof: 判断构造函数的prototype属性是否出现在对象的原型链的任何位置

let obj1 = {};
console.log(obj instanceof Person);//true
console.log(obj1 instanceof Person);//false

        对象属性constructor来判断,指向该对象的构造函数

console.log(obj.__proto__.constructor);
//ƒ Person(name) {
//            this.name = name
//        }

4、JS中判断数组的方法

        通过Object.prototype.toString.call()做判断

console.log(Object.prototype.toString.call([]).slice(8, -1) === 'Array');//true

        通过原型链判断 对象的隐式原型等于构造函数的显式原型

console.log([].__proto__ === Array.prototype);//true

        通过ES6 Array.isArray()做判断

console.log(Array.isArray([]));//true

        通过instanceof做判断

console.log([] instanceof Array);//true

        通过Array.prototype.isPrototypeOf做判断,判断Array是否在传入内容的原型链上

console.log(Array.prototype.isPrototypeOf([]));//true

5、JS中清空数组的方法

let arr = [1, 2, 3, 4, 5];
//splice
//第一个参数:规定添加或者删除元素的位置
//第二个参数:要删除元素的数量
arr.splice(0, arr.length);
console.log(arr);
//lenth:数组的长度为0
arr.length = 0;
console.log(arr);
//赋值为[]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值