文章出處

因為有閉包,能返回函數,所以針對于面向對象的封裝,繼承,多態三個特性實現,很舒服。

代碼如下:

<!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>

為什么沒寫多態呢,因為你自己想想都會。


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()