2015-10-17 86 views
3

NEWBIE問題。javascript:無法訪問成員函數

我無法訪問成員函數。我究竟做錯了什麼?

index.js -> 
var abc = require('./def'); 
var foo = new abc(); 
foo.zxc(); 

def.js -> 
var bar = function(){ 
// do something 
    var zxc = function(){ 
     // do something 
    } 
} 
module.exports = def; 

當我brwoser控制檯中運行它表明:

類型錯誤:foo.zxc不是一個函數

回答

2

因爲zxc是不從的bar功能的外部訪問的局部變量。你可以把它改成

var bar = function() { 
    // do something 
    this.zxc = function(){ 
     // do something 
    } 
} 

現在,zxc是自己的構造對象的屬性,因此它會奏效。

+0

現在它顯示TypeError:abc不是構造函數 – kalpa

+0

@kalpa你確定def.js正在導出函數bar嗎?因爲它看起來並不像你所發佈的代碼... – Touffy

0

嘗試類似如下:

// index.js -> 
var abc = require('./def'); 
var foo = new abc.bar(); 
foo.zxc(); 

// def.js -> 
var bar = function(){ 
// do something 
    this.zxc = function(){ 
     // do something 
    } 
} 
module.exports.bar = bar; 

的主要區別是你現在導出bar() {...}構造,然後可以關閉模​​塊所需的abc的使用嗎?

+0

現在它顯示TypeError:abc不是構造函數 – kalpa

+1

爲什麼不導出欄? –

+0

同樣的錯誤顯示 – kalpa