2011-02-07 27 views
5

có thể có nhiều hơn một hàm tạo cho một lớp trong javascript không? tức là một tham số có 0 tham số, một với một, một với hai tham số, v.v ...javascript: các hàm tạo khác nhau cho cùng một kiểu đối tượng

nếu có, như thế nào?

cảm ơn!

+0

Những gì bạn muốn được gọi là "đa hình hàm constructor". xem http://www.highdots.com/forums/javascript/multiple-constructors-allowed-javascript-198415.html –

+0

Bản sao có thể có của [mẫu JavaScript cho nhiều nhà xây dựng] (http://stackoverflow.com/questions/3220721/javascript-pattern-for-multiple-constructors) – Suma

Trả lời

8

Không, Javascript không hỗ trợ quá tải chức năng.

Tuy nhiên, bên trong mọi chức năng bạn có quyền truy cập vào arguments object, giữ tất cả đối số được cung cấp cho hàm, được khai báo hay không. Bạn có thể chỉ cần nhìn vào nó và quyết định chính xác bạn muốn làm gì trong constructor của bạn.

Bad, unrefined dụ:

function Foo() { 

    function singleParamConstructor(foo) { 
     ... 
    } 
    function twoParamConstructor(foo, bar) { 
     ... 
    } 

    switch (arguments.length) { 
     case 1 : 
      singleParamConstructor(arguments[0]); 
      break; 
     case 2 : 
      twoParamConstructor(arguments[0], arguments[1]); 
      break; 
     ... 
    } 
} 
+0

Có cách nào khác ngoài cách này không? – FranXh

+1

Vâng, * no *, Javascript không hỗ trợ chức năng * quá tải *. Có thể có vô số mẫu thiết kế mà bạn có thể tránh đi vào tình huống mà bạn cho rằng bạn cần quá tải hàm để bắt đầu. – deceze

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