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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
382
(1): デフォルトの名無しさん [sage] 2014/12/08(月) 19:43:37.49 ID:dHRqrq3F(1) AAS
>>376
376(1): デフォルトの名無しさん [sage] 2014/12/08(月) 14:38:33.34 ID:KCPal8fz(2/4) AAS
>>374
ちなみにcoffeescriptだと>>374のケースでも>>368なコード出力するよね
確かにaltJS起因の可能性はあるな
そんなコードを出力するなよ、とは思うが

>>377
377(4): デフォルトの名無しさん [sage] 2014/12/08(月) 15:28:29.56 ID:3mx+HWhx(4/6) AAS
>>374
(function(global){
 var SitesUtil = (function() { ← これは

 var SitesUtil = (function(super) {
...
 })(BaseClass);

とベースクラスを渡す為のもんなんだよ
> その例では確かに無駄だがイディオムとして確立してるので常にそうすべき
先人の知恵が詰まったイディオムと言ってんだからまずは理解しようとしろ
global なのにクラスとはこれいかに
>>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);

は無駄じゃないでしょうか?
なぜこう書くのでしょう?
は全てのECMAScript実装でグローバル変数を定義する手法なんだが
この場合は>>374>>368のいうように下記コードで十分事足りる

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

実際には上記コードで事足りるケースが多いんだよな
IE8の名前付き関数のバグも関数スコープで制限するから名前に気を付ければ使える
>>374はグローバル変数を複数定義する場合に有効だが、グローバル変数を多数定義することは推奨されない
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s