2012-03-24 15 views
61

Tôi có thể tự động gọi phương thức đối tượng có tên phương thức dưới dạng chuỗi không? Tôi tưởng tượng nó như thế này:Javascript tự động gọi phương thức đối tượng từ chuỗi

var FooClass = function() { 
    this.smile = function() {}; 
} 

var method = "smile"; 
var foo = new FooClass(); 

// I want to run smile on the foo instance. 
foo.{mysterious code}(); // being executed as foo.smile(); 

Trả lời

143

nếu tên của tài sản được lưu trữ trong một biến, sử dụng []

foo[method](); 
+0

Cảm ơn các bạn, điều đó thật dễ dàng, tôi hoàn toàn bỏ qua nó. Đã tìm kiếm một số chức năng và thủ thuật phép thuật. –

+7

Bạn là một huyền thoại! – Subtletree

+0

Ngắn gọn và ngắn gọn! –

24

Thuộc tính của các đối tượng có thể được truy cập thông qua các ký hiệu mảng:

var method = "smile"; 
foo[method](); // will execute the method "smile" 
-2

phương pháp có thể được gọi với eval eval("foo." + method + "()"); có thể không phải là cách rất tốt.

+0

http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil –

+8

tôi đã có một cảm giác dai dẳng có cái gì đó sai với eval ác .. – hakovala

+0

này chỉ là một giải pháp, tại sao downvote. –