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,//指向persongetAge: 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]; }