javascript面向对象的一些写法
因为有闭包,能返回函数,所以针对于面向对象的封装,继承,多态三个特性实现,很舒服。
代码如下:
<!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>
为什么没写多态呢,因为你自己想想都会。
合乎自然而生生不息。。。