0

私は JS を初めて使用し、Web アプリからいくつかのコードを学びました。これら 2 つの宣言の違いを誰か教えてもらえますか?どちらも特徴的な機能を持つオブジェクトのようなものですか? いつどの宣言を使用しますか?

a) 自己喚起機能:

    namespace.myCanvas= (function(){

      var canvas = document.getElementById('canvas');        
      var ctx = canvas.getContext('2d');
      var foo = function(...){...}

      return {
        canvas: canvas,
        context: context,
        foo: foo
      }
    })();

b)オブジェクトに関する情報を提供できる関数、私は推測します:

function makeRectangle(xPos, yPos, w, h) {
  this.xPos= xPos;
  this.yPos= yPos;
  this.w= w;
  this.h= h;

  this.make= function() {

   ctx.fillStyle = this.fill;
   ctx.fillRect(this.xPos, this.yPos, this.w, this.h);
  }
}
4

1 に答える 1

2

このようなことをすると:

(function(){ 
return {}
})();

基本的に、() のおかげで作成されてから実行される関数である自己呼び出し関数を作成しています。わかりましたので、あなたの A 関数は自己起動され、他のオブジェクトを含むオブジェクトを返します。したがって、変数 namespace.myCanvas は関数が返すオブジェクトになります。

そして、あなたの B 関数はJavascript Constructorであり、( new キーワードで使用すると) xPosyPoswおよびhプロパティとmakeメソッドを持つオブジェクトを返します。

それが役に立てば幸い

編集 このリンクはあなたを助けることができます..あなたの疑問が関数宣言と関数式の違いについてである場合

于 2013-04-05T20:34:10.753 に答える