English 中文(简体)
java 匿名功能范围
原标题:javascript anonymous function scope

我有以下匿名职能:

(function() {
 var a = 1;
 var b = 2;

 function f1() {
 }

 function f2() {
 }

 // this => window object!
 // externalFunction(this);
})();

function externalFunction(pointer) {
 // pointer.f1(); => fail!
}

I need to call external function from this anonymous function and pass it s pointer to call functions f1 & f2. But I can t do this, as this refer to window object instead of internal scope.

我可以确定以下职能:

this.f1 = function() {}

但它却带有坏思想,因为它们在全球空间中消失......

我如何通过匿名空间来履行外部职能?

最佳回答

I still wonder why you would make functions to be private, that are needed outside... But there you go:

(function() {
  var a = 1;
  var b = 2;

  var obj = {
    f1: function() {
    },
    f2: function() {
    }
  }

  externalFunction(obj);
})();

function externalFunction(pointer) {
  pointer.f1(); // win
}

或者,你可以单独通过f1和f2,那么你就不需要把他们当作物体。

问题回答

你可以把范围当作目标,但你可以与你从范围上想要的东西一道制造一个物体:

externalFunction({ f1: f1, f2: f2 });




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签