2016-11-17 48 views
1

我被打了一下,用巴貝爾和ES6,transpiling一些代碼,我在這部分stucked:Babeljs方式

class App extends SomeParent { 
    myFunction() { 

    } 
} 

,我很感興趣的輸出,是這樣的:

var _createClass = function() { 
    function defineProperties(target, props) { 
     for (var i = 0; i < props.length; i++) { 
      var descriptor = props[i]; 
      descriptor.enumerable = descriptor.enumerable || false; 
      descriptor.configurable = true; 
      if ("value" in descriptor) descriptor.writable = true; 
      Object.defineProperty(target, descriptor.key, descriptor); 
     } 
    } 
    return function(Constructor, protoProps, staticProps) { 
     if (protoProps) defineProperties(Constructor.prototype, protoProps); 
     if (staticProps) defineProperties(Constructor, staticProps); 
     return Constructor; 
    }; 
}(); 

我的問題是,爲什麼他們用使用IIF然後returing另一個函數,而不是做這樣的事情的這種方式/方法_createClassVAR

var _createClass = function (Constructor, protoProps, staticProps) { 
    function defineProperties(target, props) { 
     for (var i = 0; i < props.length; i++) { 
      var descriptor = props[i]; 
      descriptor.enumerable = descriptor.enumerable || false; 
      descriptor.configurable = true; 
      if ("value" in descriptor) descriptor.writable = true; 
      Object.defineProperty(target, descriptor.key, descriptor); 
     } 
    } 
    if (protoProps) defineProperties(Constructor.prototype, protoProps); 
    if (staticProps) defineProperties(Constructor, staticProps); 
    return Constructor; 
} 

,而不必使用IIF並返回另一個函數...

有一個很好的理由/做法?

鏈接,巴貝爾演示here

回答

1

巴貝爾的電流輸出將只創建defineProperties一次wheras你的榜樣將重新永遠單一類聲明的功能。

+0

哦,這只是一個js整體實踐,不是一個babeljs「風格」... –