我有以下功能:如何调用里面的函数,你可以通过这个访问参数?
function outer(){
index = 1;
inner();
}
function inner(){
alert(this.index);
}
我想看看1警报。另外我想要那个函数内部没有参数。
可能吗?
我有以下功能:如何调用里面的函数,你可以通过这个访问参数?
function outer(){
index = 1;
inner();
}
function inner(){
alert(this.index);
}
我想看看1警报。另外我想要那个函数内部没有参数。
可能吗?
function outer() {
this.index = 1;
inner.call(this);
}
但是如果inner有一个参数,它就不起作用。你能以这种方式提出建议吗? – gstackoverflow 2014-11-02 23:46:48
你想要传入内部? – 2014-11-02 23:50:37
“调用”函数与使用正常语法调用它不同。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call - 您可以在这里看到一个工作示例:http://jsfiddle.net/r77gg0t4/ – Fiddles 2014-11-02 23:52:22
调用函数时,如果定义了outer()
功能范围之外的index
变量指定的背景下,这将是提供给两种功能。
var index = 0;
function outer() {
index = 1;
inner();
}
function inner() {
alert(index);
}
outer(); // alerts "1"
您可以使用应用函数的对象,这将控制方面:
function blarg() {
var self = this;
self.outer = function(){
self.index = 1;
self.inner();
};
self.inner = function(){
alert(self.index);
};
self.outer(); // Call it in the constructor
self.go = function() {
self.outer(); // Or in another function
};
}
var blargObj = new blarg();
blargObj.go();
您的代码只适用于您将索引添加到全局对象。您会发现,在浏览器中执行代码时,window.index = 1,并且从新blarg()创建的上下文没有索引属性。 – 2014-11-02 23:54:48
谢谢@Steven。总是要小心,假设“这”实际上是什么。 – Fiddles 2014-11-03 00:10:05
'this'是用于访问对象的属性,而不是访问本地变量。除非将所有变量放入对象并传递对象引用,否则JavaScript不提供通过对象引用访问局部变量的方法。 – jfriend00 2014-11-02 23:44:32