js类定义方法

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

    之前写一些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运算符

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值