JavaScript-声明具有功能的函数

JavaScript-声明具有功能的函数,javascript,function,object,Javascript,Function,Object,我是JS新手,学习了一些web应用程序中的代码。有谁能告诉我这两种声明之间的区别,它们都是具有特征函数的对象吗?什么时候使用哪个声明 a) 自我唤起功能: namespace.myCanvas= (function(){ var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var foo = function(...){.

我是JS新手,学习了一些web应用程序中的代码。有谁能告诉我这两种声明之间的区别,它们都是具有特征函数的对象吗?什么时候使用哪个声明

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);
  }
}

当你这样做的时候:

(function(){ 
return {}
})();
您正在创建一个函数,基本上是一个函数,它是通过()创建并执行的。 好的,那么您的A函数是自调用的,并返回一个包含一些其他对象的对象。因此,变量namespace.myCanvas将是函数返回的对象

而B函数是a,它(与new关键字一起使用时)将返回一个具有xPosyPoswh属性和make方法的对象

希望能有帮助

编辑
如果您对函数声明和函数表达式的差异有疑问,请重复

非常感谢您的解释和链接!!!@你帮了我很多忙!