2016-03-09 15 views
6

Tôi có một lớp ecma6/es2015 với một getter được xác định như sau:Vượt qua một getter javascript như một tham số

get foo() { return this._foo; } 

Những gì tôi muốn để có thể làm là vượt qua chức năng như một tham số. Thực hiện cuộc gọi như vậy:

sẽ đơn giản gọi hàm. Có một cách sạch sẽ tôi có thể vượt qua phương pháp mà không cần gọi nó và sau đó gọi trong vượt qua tôi đi qua nó vào?

Trả lời

8

tôi giả sử bạn sẽ phải bọc nó trở thành một chức năng ẩn danh để giữ cho nó khỏi bị thực hiện:

someFunction(() => myClass.foo); 

Hoặc, bạn có thể lấy hàm getter chính nó, nhưng ít có thể đọc được ở trên:

someFunction(Object.getOwnPropertyDescriptor(myClass, 'foo').get); 
+0

Đó là ý tưởng đúng tôi thi nk. Làm thế nào tôi sẽ gọi hàm ẩn danh bên trong phương thức? –

+0

Đó là một chức năng bình thường, chỉ cần thực hiện nó (trong cả hai trường hợp). 'function someFunction (fooFunc) {var fooVal = fooFunc(); } '. – Amadan

0

Không chắc chắn tôi hiểu bạn có phải là cách xác định hàm và chuyển nó sau này sang một hàm khác (như một hàm) để được gọi sau không?

giống như thế này?

var myFunc = function() { 
 
    console.log('func'); 
 
    document.getElementById('result').innerHTML='func'; 
 
} 
 

 
console.log('start'); 
 
    document.getElementById('result').innerHTML='start'; 
 

 
setTimeout(myFunc, 3000); 
 
console.log('end'); 
 
    document.getElementById('result').innerHTML='end';
<h1 id='result'>default</h1>

Các vấn đề liên quan