js面向对象的几种写法

1,工厂方式

 var Circle = function(){

    var obj =  new Object();
    obj.PI = 3.14;

    obj.area = function(r){
        return this.PI * r * r;
    }

    return obj;
}
var c = new Circle();
alert(c.area(1.0));//结果为1

2,比较正规的写法 (构造函数的方式)

 

function Circle(r){
    this.r = r;
}

//静态变量
Circle.PI = 3.14;

//原型方法
Circle.prototype.area = function(){
    return Circle.PI * this.r * this.r ;
}

var c = new Circle(3);

console.log(c.area()); //结果为28.259999999999998 

 总结 : 无需在函数的内部重新创建对象,而使用this指代,并且函数无需明确的return

 

3,json写法

var Circle = {
    "PI" : 3.14,
    "area" : function(r){
        return this.PI * r * r;
    }
};

console.log(Circle.area(2)); //结果为:12.56 

 

 第三种写法的小实例

 var show = {

    btn : $('.div'),
    init : function(){
        var that = this;
        alert(this);
        this.btn.click(function{
            that.change();
            alert(this);
        });
    },
    change : function(){
        this.btn.css({'background':'green'});
    }
}

show.init();//注意其中this的指向问题 

 

4,其实和第一种实质是一样的

var Circle = function(r){
    this.r = r;
}

Circle.PI = 3.14;
Circle.prototype = {
    area : function(){
        return this.r * this.r * Circle.PI;
    }
}

var obj = new Circle(4);

console.log(obj.area()); //结果为:50.24

 

5, 最后一种

var Circle = new Function("this.PI = 3.14;this.area = function(r){return r*r*this.PI;}");
obj = new Circle();

console.log(obj.area(4)); //结果为:50.24 

总结:个人不是很推荐这种写法,有些混乱。 

 

其中我个人比较喜欢的写法如下:

function Circle(r){
    this.r = r;
}

// 静态变量
Circle.PI = 3.14;
//原型方法
Circle.prototype.area = function(){
    return this.r * this.r * Circle.PI;
}

var obj = new Circle(4);

console.log(obj.area());  //结果为:50.24

 

可以看到一样的结果,感觉这种写法更符合我的习惯,当然js是比较自由的,只要语法没有错误,你可以选择任何一和自己喜欢的方式去实现自己想要的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值