如何在Javascript中将字符串传递给对象方法?

时间:2017-07-19 08:03:49

标签: 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” ?
});

e是一个匿名函数。我调用了e,现在我想将字符串Hello world传递给对象方法a。如果不允许使用全局变量,我该如何将字符串传递给对象方法?

6 个答案:

答案 0 :(得分:1)

您可能需要考虑更改e的返回值,如下所示:



    var f = {
       a: function(e){
           var t = e.call();//here declare variable t
           console.log(t);    // Here should print “Hello world”
       }
    };
    f.a(function(){
        return "Hello world";//directly return string value from anonymous function
        // How to pass the string “Hello world” into the object method “a” ?
    });




答案 1 :(得分:0)

见下面的代码段



var f = {
   a: function(e){
       e.call();
       console.log(f.a.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” ?
});




答案 2 :(得分:0)

什么是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
});

答案 3 :(得分:0)

为什么不在对象中定义属性,如:

var f = {
  t: '',
  a: function(e){
    e.call();
    console.log(this.t);    // Here should print “Hello world”
  }
};
f.a(function(){
    f.t = "Hello world";
});

答案 4 :(得分:0)

如果您想在e的上下文中致电f,那么您需要将f传递给call,写e.call()将等于e()

除此之外t指的是变量,而不指t的属性a。您不能以这种方式设置变量,但可以将其存储在对象f

你会这样写。

var f = {
   a: function(e){
       e.call(this);
       console.log(this.t);
   }
};
f.a(function(){
    this.t = "Hello world";
});

答案 5 :(得分:0)

f是java脚本对象,你可以添加属性。我刚刚添加了f.t =" Hello world"。你可以在程序的任何地方使用f.t。

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” ?
    });