我尝试绑定一个函数,但我真的不知道它是如何工作的 例如
q={};
q.e=function(){return 1;}
q.e.i=function(){alert(this);}
q.e().i(); //Nothing happend I excepted that it will alert 1
那么它是怎样工作的?
谢谢你。
我尝试绑定一个函数,但我真的不知道它是如何工作的 例如
q={};
q.e=function(){return 1;}
q.e.i=function(){alert(this);}
q.e().i(); //Nothing happend I excepted that it will alert 1
那么它是怎样工作的?
谢谢你。
函数也继承自Javascript 中的Object。因此,您可以将属性分配给函数对象,您只需调用
q.e.i = function() {};
但就是这样。如果要调用它,则需要相同的语义
q.e.i();
在您当前的代码段中,您尝试.i()
在 的返回值上执行,该值e()
恰好是 number 1
。
由于 Number 对象没有方法,q.e().i();
q.e() == 1
因此调用时您应该会收到错误。(1).i()
i
很难提供帮助,因为代码没有任何意义。我只能说你的期望在我的脑海中没有意义:)
这是一些可以满足您期望的代码
var q = {};
q.e = function() { return 1; };
q.e.i = function() { alert(this); }
// Call q.e.i, specifying what to use as this
q.e.i.call(q.e());
诀窍在于,在 JS 中,this
会根据您调用函数的方式而变化。
function a() {
console.log(this);
}
var obj = {
method: a
};
// Outputs the window object, calling a function without a `.` passes
// The window object as `this`
a();
// Outputs the obj, when you say obj.method(), method is called with obj as `this`
obj.method();
// You can also force the this parameter (to the number 1 in this case)
// outputs 1
obj.method.call(1);