从内部函数传递数据以供以后使用

时间:2016-10-19 20:24:48

标签: javascript

我有函数A,它定义了另一个函数B。 B将argument作为另一个函数C传递给handle event以供日后使用。来自need data的功能B function A。是否有可能以这种方式传递数据?

function A(B){

    var o = [1,2,3];


    B = function () {
      alert(this.blio); // data from A blio is undefined
    };

    B.blio = o; //bind data in property to B

    $('selector').C({ result: B}); //handle event
}

3 个答案:

答案 0 :(得分:0)

通过以这种方式将B指定为函数,您将其声明为新类的构造函数。 B.blio不是对象的属性,而是此类的静态属性,因此无法使用this引用。

相反,您应该在B类的原型上创建一个函数,该函数将访问实例化对象上的存储值。请参阅以下示例:

var o = [1,2,3];

var B = function () {
    console.log("constructor called");
};

B.prototype.func = function () {
    console.log(this.blio);
}

function A(){
    var b = new B();//instantiate new object
    b.blio = o;//assign property to object
    b.func();//call prototype function
}

答案 1 :(得分:0)

在指定

时,覆盖传递给函数A的B参数
B = function () {
  alert(this.blio); // data from A
};

然后通过尝试将属性(比如对象)分配给函数

来再次覆盖参数B.
B.blio = o;

你应该试试这个:

function A(B){

  var o = [1,2,3];

  B.myfunc=function () 
    {
       alert(this.blio);
    };
  B.blio = o; //bind data in property to B

$('selector').C({ result: B.myfunc()}); //handle event

}

答案 2 :(得分:0)

让我们谈谈与范围相关的一些事情。

function alpha(beta) {
    this.foo = 42;
    console.log('From inside alpha:', this.foo);

    var beta = function() {
        console.log('Form inside beta:', this.foo);
    };

    beta();
}

alpha();

执行alpha功能时,实际上是全局窗口对象。

如果你在控制台中运行下面的代码,你会发现alpha函数只是将 foo 属性添加到窗口并将其设置为42。

console.log(window.foo);

通过阅读代码中的注释,您正在处理事件,并且可以从您用作数据存储的内容中获取所需的当前值,此处的关键是确保您可以访问所需值的范围。

发布更具体的代码也有助于您获得更好的答案。所有嵌套函数的作用都不清楚。