2012-12-12 51 views
5

Ember sử dụng một cái gì đó như:Làm thế nào để bạn sao chép một cái gì đó như hàm() {...} .property() trong javascript như trong Ember.js?

val: function(){ 
    ... 
}.property() 

và những thứ như:

func: function(){ 
}.observes('someValue') 

Tôi nghĩ rằng thực tế là bạn có thể thêm một tài sản đến cuối của một hàm là khá gọn gàng và muốn nhân rộng nó .Tuy nhiên, tôi không thể tìm thấy nơi một trong những điều đó được thực hiện trong nguồn và tôi tự hỏi nếu có ai biết?

Ngoài ra, quan trọng hơn, chính xác những gì đang xảy ra ở đây?

Trả lời

5

Đây là một trong số Functions methods, giống như call hoặc bind.

Bạn có thể thêm các phương thức khác bằng cách mở rộng đối tượng Function.prototype gốc. Cho dù đó là một thực hành tốt là discussable, mặc dù; cũng có một cái nhìn tại thesearticles.

+2

Nếu bạn muốn xem cách Ember thực hiện việc này, hãy xem https://github.com/emberjs/ember.js/blob/master/packages/ember-runtime/lib/ext/function.js. Cũng lưu ý rằng nếu bạn kết luận đây không phải là một ý kiến ​​hay, Ember sẽ làm cho hành vi này được cấu hình bằng cách đặt 'Ember.EXTEND_PROTOTYPES' thành false. –

+0

Cảm ơn bạn đã liên kết hữu ích! – Bergi

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