Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图理解javascript中的对象和方法创建_Javascript_Oop_Object - Fatal编程技术网

试图理解javascript中的对象和方法创建

试图理解javascript中的对象和方法创建,javascript,oop,object,Javascript,Oop,Object,我试图理解在javascript中创建对象和方法的不同方式。我读了很多文章、博客和问题,我想我大体上理解了这个概念。但是我遇到了一个小的javascript库(用coffeescript编写),它创建对象和方法的方式让我有点困惑 我已经包括了一个片段,但是如果你想要的话,你可以在网站上找到完整的脚本 代码: 我很难理解以下内容: 为什么作者喜欢用(function(){…})来包装一切?也许是为了避免创建全局变量 脚本末尾的.call(this)部分的作用是什么 作者为什么创建root变量?下面

我试图理解在javascript中创建对象和方法的不同方式。我读了很多文章、博客和问题,我想我大体上理解了这个概念。但是我遇到了一个小的javascript库(用coffeescript编写),它创建对象和方法的方式让我有点困惑

我已经包括了一个片段,但是如果你想要的话,你可以在网站上找到完整的脚本

代码:

我很难理解以下内容:

  • 为什么作者喜欢用
    (function(){…})来包装一切?也许是为了避免创建全局变量

  • 脚本末尾的
    .call(this)
    部分的作用是什么

  • 作者为什么创建
    root
    变量?下面几行是做什么的

    root = typeof exports !== "undefined" && exports !== null ? exports : window;
    root.Instafeed = Instafeed;
    
  • 因为这是在coffeescript中创建对象和方法的首选方法,所以我认为这是更好的方法之一。但它比以下版本的优势让我难以理解:

    function Instafeed(params) {
        ...
    }
    Instafeed.prototype.run = function() {
        ...
    }
    
  • 对,;这使得所有以前的顶级
    var
    s都成为局部变量

  • 它使该等于函数中的全局对象

  • 它允许它作为一个节点工作(对于Node.js或Browserify)


  • 谢谢你的快速回复。你对最后一部分有什么意见吗?(相对于普通方式的优势…)@monroo:哪些优势不同?
    function Instafeed(params) {
        ...
    }
    Instafeed.prototype.run = function() {
        ...
    }