2

ラーニングセンターのコード編成セクションで公開されたモジュールパターンに関する最後のコードフラグメント(以下に報告)を考慮して、例のモジュールのいくつかの側面を理解しようとしています。

  • 変数宣言($items$container...)はで区切られ、;関数宣言(createContainer、、、、....)はで区切られます。なんで?ブラケットの問題はありますか?buildUrlshowItem,
  • 最初の3つの変数(、、および)の名前がで$items始まる$container$currentItem$なぜですか?これは、DOMフラグメント変数を識別するために使用される命名規則(javascript文字を許可する$ため)を意味しますか、それとも他の理由がありますか?
  • 他の関数(、、 ...)が持っていないのに、なぜ関数はを使用して宣言されcreateContainerているのですか?varbuildUrlshowItemvar

// jQuery機能のモジュールパターンを使用$(document).ready(function(){

var feature = (function() {

var $items = $("#myFeature li");
var $container = $("<div class='container'></div>");
var $currentItem = null;
var urlBase = "/foo.php?item=";
var createContainer = function() {
  var $i = $( this );
  var $c = $container.clone().appendTo( $i );
  $i.data( "container", $c );
},
buildUrl = function() {
  return urlBase + $currentItem.attr("id");
},
showItem = function() {
  var $currentItem = $( this );
  getContent( showContent );
},
showItemByIndex = function( idx ) {
  $.proxy( showItem, $items.get( idx ) );
},
getContent = function( callback ) {
  $currentItem.data("container").load( buildUrl(), callback );
},
showContent = function() {
  $currentItem.data("container").show();
  hideContent();
},
hideContent = function() {
  $currentItem.siblings().each(function() {
    $( this ).data("container").hide();
  });
};
$items.each( createContainer ).click( showItem );

return {
  showItemByIndex: showItemByIndex
};

})();

feature.showItemByIndex( 0 );
});
4

1 に答える 1

2
  1. 変数は複数のステートメントで宣言することも、1つだけで宣言することもできます。(var x;var y;var x,y;)。私の知る限り、違いはありません。

  2. $で始まります:開発者が選択します。PHPプログラマーにとっては、見栄えが良く、変数に影響を与えず、特別なことではなく、単なる命名規則です。私はそれを使用しません、そして私はそれをお勧めしません、それはあなたのコードを最悪に見せるだけです、そしてあなたがjQueryを使うならばあなたにもっと多くの頭痛を与えるでしょう。

  3. ポイント1を参照してください(「var」がありますが、ステートメントの先頭にあります):

    var createContainer = function(){...}、buildUrl = function(){...}、showItem = function(){...}、showItemByIndex = function(idx){...} ...;

詳細については、http://www.w3schools.com/js/js_variables.aspおよびhttp://www.wikihow.com/Declare-a-Variable-in-Javascriptを参照しください

于 2013-02-27T20:37:45.247 に答える