js类定义方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25073789/article/details/79453714

    学习使人进步,类使代码清晰!

    之前写一些js代码没有太复杂的逻辑,几个处理事件的函数,或者监听事件,所以没有考虑使用类。处理逻辑多了之后,so代码一团糟,真是错中复杂啊。突然发现万事都要有长远规划,切不可图一时痛快。

    言归正传

    -----------------------------------------------华丽的分割线---------------------------------------------------------------

首先常用的方式有:

1、构造函数方式

构造函数熟悉度比较高,面向对象最常见的

function Car(color,door){
    this.color = color;
    this.doors = door;
    this.showColor = function(){
        alert(this.color)
    };
}
var car1 = new Car(“red”,4);
var car2 = new Car(“blue”,4);

调用构造函数的时候就创建了对象,所以函数内部使用this访问属性。

2、原型方式

prototype属性可以向对象内添加属性和方法

function Car(){
}
Car.prototype.color = “red”;
Car.prototype.doors = 4;
Car.prototype.showColor = function(){
    alert(this.color);
}
var car1 = new Car();
var car2 = new Car();

原型方式一般不会单独使用,一般结合构造函数方式使用,prototype填充类中未定义的属性和方法

function Car(color,door){
    this.color = color;
    this.doors = door;
    this.arr = new Array(“aa”,”bb”);
}
Car.prototype.showColor(){
    alert(this.color);
}
var car1 = new Car(“red”,4);
var car2 = new Car(“blue”,4);
car1.arr.push(“cc”);
alert(car1.arr); //output:aa,bb,cc
alert(car2.arr); //output:aa,bb

3、动态原型方式

动态原型方式使用一个标志来判断是否给原型赋予了方法,保证方法只创建一次

function Car(color,door){
    this.color = color;
    this.doors = door;
    this.arr = new Array(“aa”,”bb”);
    if(typeof Car._initialized == “undefined”){
        Car.prototype.showColor = function(){
            alert(this.color);
        };
        Car._initialized = true;
    }
}

4、工厂方式

function Car(){
    var ocar = new Object;
    ocar.color = “blue”;
    ocar.doors = 4;
    ocar.showColor = function(){
        document.write(this.color)
    };
    return ocar;
}
var car1 = Car();
var car2 = Car();

调用此函数时将创建新对象,并赋予它所有的属性和方法。使用此函数可以创建2个属性完全相同的对象。

当然可以通过给它传递参数来改版这种方式

function Car(color,door){
    var ocar = new Object;
    ocar.color = color;
    ocar.doors = door;
    ocar.showColor = function(){
        document.write(this.color)
    };
    return ocar;
}
var car1 = Car(“red”,4);
var car2 = Car(“blue”,4);
car1.showColor() //output:”red”
car2.showColor() //output:”blue”

5、混合工厂方式

建立假的构造函数,返回另一种对象的新实例

function Car(){
    var ocar = new Object();
    ocar.color = “red”;
    ocar.doors = 4;
    ocar.showColor = function(){
        alert(this.color)
    };
    return ocar;
}

与工厂方式所不同的是,这种方式使用new运算符

-----------------------------------------------结束分隔符------------------------------------------------------------------

目前使用最广泛的就是混合构造函数/原型方式

猜你喜欢

转载自blog.csdn.net/qq_25073789/article/details/79453714
今日推荐