2017-02-27 233 views
0

正在尋找解決方案的SO,但無法找到它。在javascript中調用實例創建回調的實例方法

let instance = new Obj(arguments, function() { 
    instance.instanceMethod(function() { 
     console.log('status'); 
    }) 
}) 

我想從實例創建中的回調調用實例的方法。我怎樣才能正確實施這個邏輯?上述不起作用,節點將「實例」報告爲未定義。我試圖將「bind(this)」添加到外部回調函數的末尾,但這也不起作用。

+0

'instance'或'instace'? – hackerrdave

+1

你打算怎麼撥打回叫電話? *實例*沒有分配一個值,直到完全評估右側。 – RobG

+0

「Obj」是你自己的班還是第三方班?如果它是你自己的,它是如何實現的?在這種情況下,如果'Obj'構造函數是以這種方式實現的,您可以使用'this'來引用'instance'。 – Frxstrem

回答

0
function Obj(args, cb){ 
    setTimeout(cb, 0);  
} 
Obj.prototype.instanceMethod = function(cb){cb();}; 

let instance = new Obj([1,2,3], function() { 
    instance.instanceMethod(function() { 
     console.log('status'); 
    }) 
}); 

使用setTimeout調用使用實例async的函數。因此實例將首先被函數調用。

相關問題