以下代码使用Destructuring
:
var obj = {
fun1:function() { console.log('Working') }
};
obj = { fun1:function(){ console.log("Replaced Working")} }
obj.fun1();
//output:
//Replaced Working
以下Promise
是否也这样做?
var pr = Promise.resolve({then:function(resolve){
resolve(20);
}
})
pr.then(function(v){
console.log(v);
})
是指pr
等于Promise
对象,其then
方法更改为:
function(resolve){
resolve(20);
}
最后,pr.then(function(v){...}
产生结果。如果不使用Destructuring
,那么为什么在then
中传递了Promise.resolve
属性呢?
答案 0 :(得分:2)
以下代码使用解构
不,不是。销毁将是
const { fun1 } = obj;
fun1();
您正在重写一个属性。
以下Promise是否也一样?
不,不是。 resolve
是promise构造函数的内部函数,然后调用传递到then
s中的所有函数。根本没有重写任何属性。
为什么Promise.resolve中传递了then属性?
我不知道,那根本没有道理。如果您这样做:
const pr = Promise.resolve(42);
pr.then(console.log) // 42
如果传入一个对象,它将解析为该对象:
const pr = Promise.resolve({ some: "thing" });
pr.then(console.log); // { some: thing }
如果该对象具有then
方法,则将其称为thenable
对象,并且承诺将遵循该函数并假定其具有function(onFulfill, onReject)
的签名。这是最后一个示例。