如何在Javascript中将字符串传递到对象方法中?
我有一个对象方法如何在Javascript中将字符串传递到对象方法中?,javascript,Javascript,我有一个对象方法a,如下所示: var f = { a: function(e){ e.call(); console.log(t); // Here should print “Hello world” } }; f.a(function(){ f.a.t = "Hello world"; // How to pass the string “Hello world” into the object method “a” ? });
a
,如下所示:
var f = {
a: function(e){
e.call();
console.log(t); // Here should print “Hello world”
}
};
f.a(function(){
f.a.t = "Hello world";
// How to pass the string “Hello world” into the object method “a” ?
});
e
是一个匿名函数。我调用e
,现在我想把一个字符串helloworld
传递到对象方法a
。如果不允许使用全局变量,如何将字符串传递到object方法中?请参见下面的代码段
var f={
a:功能(e){
e、 call();
console.log(f.a.t);//这里应该打印“Hello world”
}
};
f、 a(函数(){
f、 a.t=“你好,世界”;
//如何将字符串“helloworld”传递到对象方法“a”中?
});代码>什么是t
的范围?如果它是f
的一个属性,请编写以下内容:
var f = {
a: function(e){
e.call();
console.log(this.t); // this line changed
}
};
f.a(function(){
f.t = "Hello world"; // this line changed
});
为什么不在对象中定义属性,如:
var f={
t:“,
a:功能(e){
e、 call();
console.log(this.t);//这里应该打印“Hello world”
}
};
f、 a(函数(){
f、 t=“你好,世界”;
});
如果要在f
的上下文中调用e
,则需要将f
传递给call
,写入e。call()
将等于e()
除此之外,t
指的是一个变量,而不是a
的属性t
。不能这样设置变量,但可以将其存储在对象f
你会那样写的
var f = {
a: function(e){
e.call(this);
console.log(this.t);
}
};
f.a(function(){
this.t = "Hello world";
});
您可能想考虑更改<代码> e <代码>的返回值如下:
var f={
a:功能(e){
var t=e.call();//这里声明变量t
console.log(t);//这里应该打印“Hello world”
}
};
f、 a(函数(){
返回“Hello world”;//直接从匿名函数返回字符串值
//如何将字符串“helloworld”传递到对象方法“a”中?
});代码>f是java脚本对象,您可以向其添加属性。我刚刚添加了f.t=“Hello world”。您可以在程序中的任何地方使用f.t,只要您有f范围
var f = {
a: function(e){
e.call();
console.log(f.t); // Here should print “Hello world”
}
};
f.a(function(){
f.t = "Hello world";
// How to pass the string “Hello world” into the object method “a” ?
});
非常优雅。此解决方案很好地将f
的声明与匿名函数解耦:您不必知道匿名函数中f
的内部工作。在其他解决方案中(包括我提出的解决方案),匿名函数必须知道,为了传递字符串“Hello world”
,它必须设置objectf
或this
(在这种情况下,如果忘了将this
添加到e.call()
,它将不起作用).