Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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中的bind应该在非全局上下文中使用吗?如果是,下面的代码有什么问题?_Javascript_Global_Bind - Fatal编程技术网

javascript中的bind应该在非全局上下文中使用吗?如果是,下面的代码有什么问题?

javascript中的bind应该在非全局上下文中使用吗?如果是,下面的代码有什么问题?,javascript,global,bind,Javascript,Global,Bind,let info={ 名称:“马克”, 年龄:23,, 位置:功能(cname){ log(“你好”+this.name+“你是”+this.age+“岁,你住在”+cname) } }; let details=info.location.bind(info,“孟买”); 控制台日志(详细信息)你想做什么?下面的代码会在控制台中给你“你好,马克,你23岁了,你住在孟买”,我相信你正在尝试 let info = { name : "Mark", age : 23 ,

let info={
名称:“马克”,
年龄:23,,
位置:功能(cname){
log(“你好”+this.name+“你是”+this.age+“岁,你住在”+cname)
}
};
let details=info.location.bind(info,“孟买”);

控制台日志(详细信息)你想做什么?下面的代码会在控制台中给你“你好,马克,你23岁了,你住在孟买”,我相信你正在尝试

 let info = {
  name : "Mark",
  age : 23 , 
  location : function city(cname){
  console.log("Hello "+this.name+ " you are "+ this.age+ " years old and you live in " + cname )
}
};

info.location("mumbai")
如果您调用位置作为对象信息的一种方法,其“this”将自动设置为对象信息。所以你不需要绑定。如果按如下方式调用,则需要绑定:

const myFun = info.location;
myFun = myFun.bind(info);
myFun("mumbai");

您不需要绑定,如果在对象上调用函数,它将显示所需的结果,但是如果在全局上下文中调用它,那么this.props将是未定义的

这完全取决于调用函数的方式,取决于自定义对象范围或全局窗口对象范围,取决于此,此引用将延迟

let info={
名称:“马克”,
年龄:23,,
位置:功能(cname){
log(“你好”+this.name+“你是”+this.age+“岁,你住在”+cname)
}
};
//显示未定义的窗口对象
const globalFunc=info.location
环球金融中心(“孟买”)
//以传递信息对象作为参数在全局作用域上调用function
globalFunc.call(信息,“孟买”)

info.location('mumbai')
.bind
返回一个函数-您仍然需要执行它。如果您只想使用不同的
this
调用函数,请使用
.call
.apply
为什么要在这里使用bind?我正在尝试学习bind方法。所以我必须使用它。@GeoMukkath
console.log(details)
->
details()
只需执行您得到的函数即可。而且不需要
console.log
——它不会返回任何内容。