JavaScript完成类与继续的要领(周全整顿)

JavaScript定义类的4种要领

工场要领

function creatPerson(name, age) {
            
    var obj = new Object();

    obj.name = name;
    obj.age = age;

    obj.sayName = function() {
        window.alert(this.name);
    };
            
    return obj;
}

组织函数要领

function Person(name, age) {

    this.name = name;
    this.age = age;

    this.sayName = function() {
        window.alert(this.name);
    };
}

原型要领

function Person() {
        
}
        
Person.prototype = {
    constructor : Person,
    name : "Ning",
    age : "23",
    sayName : function() {
        window.alert(this.name);
    }
};

人人能够看到这类要领有缺点,类里属性的值都是在原型里给定的。

组合运用组织函数和原型要领(运用最广)

function Person(name, age) {
    this.name = name;
    this.age = age;
}
        
Person.prototype = {
    constructor : Person, 
    sayName : function() {
        window.alert(this.name);
    }
};

将组织函数要领和原型要领连系运用是现在最经常使用的定义类的要领。这类要领的优点是完成了属性定义和要领定义的星散。比方我能够建立两个对象person1person2,它们离别传入各自的name值和age值,但sayName()要领能够同时运用原型里定义的。

JavaScript完成继续的3种要领

借用组织函数法(又叫典范继续)

function SuperType(name) {

    this.name = name;

    this.sayName = function() {
        window.alert(this.name);
    };
}
        
function SubType(name, age) {

    SuperType.call(this, name); //在这里借用了父类的组织函数

    this.age = age;
}

对象假装

function SuperType(name) {

    this.name = name;
    
    this.sayName = function() {
        window.alert(this.name);
    };
}
        
function SubType(name, age) {

    this.supertype = SuperType; //在这里运用了对象假装
    this.supertype(name);

    this.age = age;
}

组合继续(最经常使用)

function SuperType(name) {

    this.name = name;

}
        
SuperType.prototype = {
        
    sayName : function() {
        window.alert(this.name);
    }
};
        
function SubType(name, age) {
    
    SuperType.call(this, name); //在这里继续属性
    this.age = age;
}

SubType.prototype = new SuperType(); //这里继续要领

组合继续的要领是对应着我们用‘组合运用组织函数和原型要领’定义父类的一种继续要领。一样的,我们的属性和要领是离开继续的。

总结

以上就是罕见的JavaScript中面向对象编程的几种完成,迎接人人补充与斧正。

    原文作者:刘宁Leo
    原文地址: https://segmentfault.com/a/1190000013253890
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞