Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在对象上正确运行函数,以及如何正确使用.apply()在对象上运行方法?_Javascript_Object_This - Fatal编程技术网

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
根本不是字符串;这是一个函数。这正是我需要帮助我理解发生了什么的解释。非常感谢你!