2017-09-27 50 views
0

我有一個JS類中聲明這樣:基本JS - 需要聲明var和利用內幕

class Useful { 
    someFunction(index) { 
    //Does something with index 
} 

但是我不能確定最好的做法是在聲明需要的變量,如var fs = require('fs')以及如何使用什麼它 - 即:

  • 應該var fs = require('fs')class聲明內部或外部它
  • 然後使用它,我會用this

謝謝。

更新 - 以下意見 - 這是正確的

const fs = require('fs') 

    class Useful { 
     someFunction(index) { 
     //Does something with index 
     fs.writeFile(......) 
    } 
+0

不允許(現在)在類塊內部進行變量聲明。把它放在之前,並且總是使用'const'。你想如何訪問FS? –

+0

@Jonasw我想在該類中的函數內使用'fs' '''createNewUser(token){ ////這裏使用fs.writefile''' – userMod2

+0

是的,然後把它放在類聲明之外,並且youre完成。 –

回答

0

class Useful { 
    someFunction(index) { 
    const fs = require("fs"); 
    } 
} 

const fs = require("fs"); 
class Useful { 
    someFunction(index) { 

    } 
} 

即使世界這兩者之間的一個重要區別是:在A中,FS將每次加載someFunction被稱爲。這對性能不利並且沒有真正的優勢。因此,請使用B.

+0

謝謝 - 這很有道理。也可以說我有一些像'const nUser = require('../ helpers/newUserCreator')'那個'newUserCreator'文件有這樣的: '''''module.exports = { createNewUsers:function(numberOfAccountsToCreate){.. ..}'''我怎麼才能正確地調用'createNewUsers'這個函數呢? – userMod2

+0

@ userMod2也許'nUser.createNewUsers()'?! –

+0

在node.js模塊中只加載一次,所有其他要求都來自緩存。所以A和B之間只有一個區別,在第一種情況下,調用'someFunction'時,模塊將被加載。 – alexmac

1

1)所有的模塊需要聲明理想情況下應在該文件的頂部。

const useful = require('useful') 

class foo .... 

2)「這」指的是類本身,所以你需要明確附上您剛纔導入的類的構造函數的類屬性內的模塊,如果你需要它這樣

class Useful (importedModule) { 
    constructor(importedModule) { // constructor syntactic sugar 
     this.module = importedModule; 
    } 

3)與es6你也可以導入你的模塊

import somethingUseful from 'module_or_./filePath_where_something_useful_is_kept' 

4)與es6 let和const是更好的替代var。