Javascript 如何在对象上正确运行函数,以及如何正确使用.apply()在对象上运行方法?
我很难让它正常运行。我很接近,但事情与我所需要的恰恰相反。如果您能在这方面提供任何帮助,或者对我做错的事情多做一点解释,我们将不胜感激。谢谢 我得到了一个函数Javascript 如何在对象上正确运行函数,以及如何正确使用.apply()在对象上运行方法?,javascript,object,this,Javascript,Object,This,我很难让它正常运行。我很接近,但事情与我所需要的恰恰相反。如果您能在这方面提供任何帮助,或者对我做错的事情多做一点解释,我们将不胜感激。谢谢 我得到了一个函数checkOut和两个对象book1和book2 函数签出(){ this.available=!this.available; return“${this.title}”是否${this.available?'':'not'}可用于签出。`; } var book1={ 标题:“一条鱼,两条鱼,红鱼,蓝鱼”, 作者:“苏斯博士”, 可用
checkOut
和两个对象book1
和book2
函数签出(){
this.available=!this.available;
return“${this.title}”是否${this.available?'':'not'}可用于签出。`;
}
var book1={
标题:“一条鱼,两条鱼,红鱼,蓝鱼”,
作者:“苏斯博士”,
可用:false,
结帐:结帐
};
变量book2={
标题:“哦,你要去的地方!”,
作者:“苏斯博士”,
可用:false
};
var book2CheckOut=checkOut.bind(book2);
控制台日志(book2CheckOut);
var book2CheckOut2=book1.checkOut.apply(book2);
控制台日志(book2CheckOut2)代码>
我首先应该在book2
上运行函数checkOut
,并将其保存到变量book2CheckOut
以下是我为此所做的努力:
var book2CheckOut = checkOut.bind(book2)
var book2CheckOut2 = book1.checkOut.apply(book2)
根本不运行该函数。为此,您可以使用:
您可以为此使用bind
,但您希望调用结果,例如:
var checkOutBook2 = checkOut.bind(book2);
var book2CheckOut = checkOutBook2();
或
…但是如果您不打算保留和重用该函数,那么创建该函数是没有意义的
然后我应该在book1 checkOut
函数上使用.apply()
方法,使用book2
作为参数运行它。将其保存到变量book2CheckOut2
以下是我为此所做的努力:
var book2CheckOut = checkOut.bind(book2)
var book2CheckOut2 = book1.checkOut.apply(book2)
一旦第一部分正确,这就可以了(因为第一次调用会翻转可用
标志)。请注意,它与checkOut.apply(book2)
完全相同,您只是从book1
上的属性获取函数引用,而不是从范围内标识符checkOut
获取函数引用
完整序列:
函数签出(){
this.available=!this.available;
return“${this.title}”是否${this.available?'':'not'}可用于签出。`;
}
var book1={
标题:“一条鱼,两条鱼,红鱼,蓝鱼”,
作者:“苏斯博士”,
可用:false,
结帐:结帐
};
变量book2={
标题:“哦,你要去的地方!”,
作者:“苏斯博士”,
可用:false
};
var book2CheckOut=checkOut.apply(book2);
控制台日志(book2CheckOut);
var book2CheckOut2=book1.checkOut.apply(book2);
控制台日志(book2CheckOut2)
book2CheckOut
根本不是字符串;这是一个函数。这正是我需要帮助我理解发生了什么的解释。非常感谢你!