我尝试绑定一个函数,但我真的不知道它是如何工作的 例如
q={};
q.e=function(){return 1;}
q.e.i=function(){alert(this);}
q.e().i(); //Nothing happend I excepted that it will alert 1
那它是如何运作的?
谢谢。
答案 0 :(得分:2)
一个函数也在Javascript中继承从 Object 继承。因此,您可以将属性分配给功能对象,您只需通过调用
进行操作q.e.i = function() {};
但就是这样。如果你想调用它,你需要相同的语义
q.e.i();
在您当前的代码段中,您尝试在.i()
的返回值上执行e()
,这恰好是数字1
。< / p>
答案 1 :(得分:1)
调用q.e().i();
q.e() == 1
时应该收到错误,因此(1).i()
是错误,因为Number对象没有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);