使用Function.prototype.bind创建的函数对象没有 原型属性或[[代码]],[[FormalParameters]]和 [[范围]]内部属性。
听起来我无法做那样的事(简单例子)
const persone = {
name: 'Hello World',
getName(){
return this.name;
}
};
const cat = {
name: 'Cat'
}
const dog = {
name: 'Dog'
}
console.log(persone.getName.bind(cat).bind(dog)()) // Cat
为什么限制?有没有陷阱?
答案 0 :(得分:0)
因为bind包装你的函数,插入它。再次包装然后不起作用。
它是这样的:
const persone = {
name: 'Hello World',
getName(){
return this.name;
}
};
const cat = {
name: 'Cat'
}
const dog = {
name: 'Dog'
}
//its like doing this:
var methodNoThis = personne.getName;
var methodCatThis = function(){ return methodNoThis.apply(cat);
var methodDogOnCatThis = function(){ return methodCatThis.apply(dog);
它也在Mozzila Docs上声明:
bind()函数创建一个新的绑定函数(BF)。 BF是一个包含原始函数对象的外来函数对象(来自ECMAScript 2015的术语)。调用BF通常会导致执行包装函数。