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>

为什么没写多态呢,因为你自己想想都会。

原文地址:https://www.cnblogs.com/samwu/p/3328650.html