[過去ログ] + JavaScript の質問用スレッド vol.117 + (1001レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
370
(1): デフォルトの名無しさん [sage] 2014/12/08(月) 13:47:05.60 ID:e/VeyYdn(1/3) AAS
>>368
368(9): デフォルトの名無しさん [sage] 2014/12/08(月) 13:25:02.71 ID:uRv2wrgF(1) AAS
質問です
外部リンク:qiita.com
ここのサイトの「インスタンス作る版の例」みたいに

(function(global){
 var SitesUtil = (function() {
  function SitesUtil(site){
   this.site = site;
  }
  SitesUtil.prototype.getTemplateByName = function(templateName) {
(略)
  };
  return SitesUtil;
 })();
 global.SitesUtil = SitesUtil;
})(this);

と書いてる例を (CoffeeScript が吐いた js とかでも) 良く見かけますが
最初と最後の

(function(global){

 global.SitesUtil = SitesUtil;
})(this);

は無駄じゃないでしょうか?
なぜこう書くのでしょう?
無名関数の引数にグローバルオブジェクトをbindするテクニックにとらわれているだけで無駄なコードだと思う
無名関数でスコープ制限するだけなら内部関数でも行われているしね
それはそうと、quiitaにはコメント機能があるから、コメントで質問してみると作者の意図が聞けていいんじゃないかな
373
(2): デフォルトの名無しさん [sage] 2014/12/08(月) 14:06:47.92 ID:e/VeyYdn(2/3) AAS
>>372
372(1): デフォルトの名無しさん [sage] 2014/12/08(月) 13:58:23.29 ID:3mx+HWhx(3/6) AAS
>>370
だから無駄じゃない

var Module;
(function(global){
...
})(Module || Module = {});

とすればモジュールを簡単に定義できて、再利用する際の利便性が増す
> その例では確かに無駄だがイディオムとして確立してるので常にそうすべき
だから↑と言っている
>>368の中のコードで同じようなことをやってるから無駄

> (function(global){
なぜ Module が global なのさ
一つのやり方に拘ってるから全体が見えないんでしょ

var Module = (function(Module){
...
return Module;
})(Module || {} );
374
(4): デフォルトの名無しさん [sage] 2014/12/08(月) 14:11:28.85 ID:e/VeyYdn(3/3) AAS
>>368のglobal束縛を生かすならこう書く

(function(global){
 function SitesUtil(site){
  this.site = site;
 }
 SitesUtil.prototype.getTemplateByName = function(templateName) {
(略)
  };
 global.SitesUtil = SitesUtil;
})(this);

>>368は無駄にクロージャを生産しすぎなんだよ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s