js每日十题

发布于:2024-06-03 ⋅ 阅读:(87) ⋅ 点赞:(0)

1. 6.2 第4题

请阅读以下代码

1

2

3

var obj = {};

obj.log = console.log;

obj.log.call(console,this);

该代码在浏览器中执行,输出的日志结果是什么?


答:

第二条代码表示 obj的log属性指向console的log函数,而console.log函数一般接收一个参数用于打印。

第三局代码使用call,改变this指向,指向console,传入参数this。obj.log.call(console,this)=console.log(this)

在函数里面的this指向console,但是打印的是从外面传进去的this对象,而this默认指向全局对象(window)。

所以输出window。


知识点:

1. this默认指向全局对象(window)

2. call()方法的第一个参数是函数内this的指向,第二个参数开始,一次被传入函数中。而且函数是立即执行的。

2. 6.2 第5题

function Person(age) {
    this.age = age;
}
Person.prototype = {
    constructor: Person,//指向person
    getAge: function () {
        console.log(this.age);
    },
}
var ldh = new Person(24);  
//ldh = { age: 24 }
Person.prototype.age = 18; 
// Person.prototype = { 
//                   age: 18 ,
//                   getAge: function () {
//                        console.log(this.age);
//                   },
//}
Object.prototype.age = 20; 
// Object.prototype = { age: 20 }
ldh.getAge(); 
//ldh这个对象上没有getAge方法,就去构造函数的原型上找
//继承构造函数的原型上的getAge这个方法,this指向的是实例化对象ldh

 

3. Promise.all(iterable)

iterable :一个可迭代对象,例如 Array 或 String

返回值:返回一个promise

简单说:Promise.all 等待所有兑现(或第一个拒绝)的结果。

Promise.all()文档

// 如果要并行执行多个异步函数,你需要调用这些异步函数并使用返回的 Promise

//错误的写法
async function getPrice() {
  const choice = await promptForDishChoice();
  const prices = await fetchPrices();
  return prices[choice];
}

//正确
async function getPrice() {
  const [choice, prices] = await Promise.all([
    promptForDishChoice(),
    fetchPrices(),
  ]);
  return prices[choice];
}


网站公告

今日签到

点亮在社区的每一天
去签到