2013-05-04 12 views
5

Zastanawiam się w pliku javascript od źródła http://www.google.com faktycznie robię to często i próbuję zrozumieć, co oni tam zrobili. dzisiaj zastanawiałem się w plikach i znalazłem dziwne wywołania funkcji. Może to głupia rzecz, ale naprawdę nie mam pojęcia, co to jest i dlatego nie mogłem pomóc, szukając jej.Javascript: co oznacza ta składnia (0, functionName) (functionParemeter);

czytelnym przypominać o Code

var someFunction = function(somaeParamenter){ 
    //do some stuffs; 
    return something; 
} 

var someOtherThing = (0, someFunction)(oneParameter); 

Proszę wybaczyć mój brak wiedzy.

EDIT:

source-

używam Chrome. podczas otwierania strony http://www.google.com otworzyłem narzędzie dla programistów. następnie otworzyłem kartę źródeł i otworzyłem plik https://www.google.com.bd/xjs/_/js/s/c,sb,cr,cdos,vm,tbui,mb,wobnm,cfm,abd,bihu,kp,lu,m,tnv,amcl,erh,hv,lc,ob,r,rsn,sf,sfa,shb,srl,tbpr,hsm,j,p,pcc,csi/rt=j/ver=WUW4ydIf-wI.en_US./am=gA/d=1/sv=1/rs=AItRSTPu52CumknQsh0was81vrM4inla_w w przeglądarce. ten plik jest jedynym plikiem js, jaki widziałem. Włączyłem „Pretty print” w wierszu 58 znajdziesz defination-

_.Va = function(a) { 
      var b = typeof a; 
      if ("object" == b) 
       if (a) { 
        if (a instanceof window.Array) 
         return "array"; 
        if (a instanceof window.Object) 
         return b; 
        var c = window.Object.prototype.toString.call(a); 
        if ("[object Window]" == c) 
         return "object"; 
        if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) 
         return "array"; 
        if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) 
         return "function" 
       } else 
        return "null"; 
      else if ("function" == b && "undefined" == typeof a.call) 
       return "object"; 
      return b 
     }; 

aw linii 83 zobaczysz funkcja jest wywoływana.

_.Za = function(a) { 
      return "array" == (0, _.Va)(a) 
     }; 
+1

Czy możesz podać dokładne źródło, proszę? Nie mogę go znaleźć w tym, co dostaję pod adresem: http: // www.google.com/' – Bergi

+1

Uwaga boczna: Google JS jest silnie zoptymalizowany i zminimalizowany, więc prawdopodobnie nie jest najlepszym miejscem, z którego można czerpać inspiracje. – JJJ

+0

@Juhana masz rację, ale nie mogę się powstrzymać przed zaglądaniem tam :) – maksbd19

Odpowiedz

7
(0, someFunction) 

prostu zwraca someFunction

tak to właśnie odpowiednik

var someOtherThing = someFunction(oneParameter); 

Na pewno wpisane dokładnie tak, jak to było? Jeśli tak, i jeśli to nie było jakieś zaciemnienie, może to być niefortunny skutek jakiegoś umiaru. Jeśli prawdziwy kod był trochę inny, na przykład (0, someObject.someFunction), może być pewne użycie tego indirect function call.

EDIT:

edytować potwierdza, że ​​celem było prawdopodobnie w celu zapewnienia this, wewnątrz funkcji, to globalny obiekt (window w przeglądarce), a nie przedmiot, na którym Va został dołączony (_) .

+0

Zamiast '0', prawdopodobnie miały przypisanie lub wywołanie funkcji lub inne wyrażenie. – Zirak

+0

'(Ziemniak, myślę, że) jest wynikiem zaciemniania. – Doorknob

+0

(Nawiasy i przecinki) wyraźnie (ukryty,) kod ... –