我有函数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
}
答案 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);
通过阅读代码中的注释,您正在处理事件,并且可以从您用作数据存储的内容中获取所需的当前值,此处的关键是确保您可以访问所需值的范围。
发布更具体的代码也有助于您获得更好的答案。所有嵌套函数的作用都不清楚。