文章出處
文章列表
因為有閉包,能返回函數,所以針對于面向對象的封裝,繼承,多態三個特性實現,很舒服。
代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <script type="text/javascript"> // 封裝 var Person = function(name_arg){ var name = name_arg; function show_name(){ console.log(name); } function set_name(set_name_arg){ name = set_name_arg; } return function(select){ if("name" == select){ show_name(); } else if("setName" == select){ set_name(arguments[1]); } } } var person_sam = Person("Sam"), person_tom = Person("Tom"); person_sam("name"); person_tom("name"); person_sam("setName","newSam"); person_sam("name"); // 繼承 var Male_person = function(arg_obj){ var new_person = Person(arg_obj.name), gender = arg_obj.gender; function show_name(){ new_person("name"); } function show_gender(){ console.log(gender); } return function(select){ if("name" == select){ show_name(); } if("gender" == select){ show_gender(); } } } var male_person = Male_person({"name":"nanren","gender":"male"}); male_person("name"); male_person("gender"); </script> </body> </html>
為什么沒寫多態呢,因為你自己想想都會。
文章列表
全站熱搜