论坛首页 Web前端技术论坛

JS 中面向对象的5种写法

浏览 74229 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (15) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-03  
比较习惯第一种。
第四种若要生成很多对象,那很麻烦,而且每个对象都存储相同的方法有点浪费存储空间
0 请登录后投票
   发表时间:2009-08-03  
js的确是很好的学习点, 这个和java 整合可以提高N多的页面开发效率啊
0 请登录后投票
   发表时间:2009-08-03  
最好用prototype的方式。
0 请登录后投票
   发表时间:2009-08-03  
比较倾向于,第一种的实现.

第1种:
优点:体现了OO的继承特性. 每次初始化Circle对象,都只设置了必须的值(r).

第2种:
缺点:每次都必须初始化很多变量,时间成本+内存成本,相比第一种高昂了点.

第3种:
缺点:虽然实现了封装,但貌似Circle只是一个包名,对于OO的继承好像发挥不大.

第4种:
缺点:同第3种. 只是用了Object Literal方式初始化了对象.

第5种:
缺点:代码编写,确实不方便.没体现更好的分离.
0 请登录后投票
   发表时间:2009-08-03  
以前看惯了第四种,但是在转变思想,还是在用第一种
0 请登录后投票
   发表时间:2009-08-03  
第四种 json格式比较舒服
0 请登录后投票
   发表时间:2009-08-04  
第四种!~
0 请登录后投票
   发表时间:2009-08-06  
个人觉得第一种更符合OO开发要求!
第四种适合可以理解成封包! 且非常灵活,本身就是一种json格式,所以方便应用于json格式传递环境下,eg:ExtJs就是采用了第一种方式封装核心,第四种方式打包UI
0 请登录后投票
   发表时间:2009-08-06  
第四种如何构造出同一个对象的多个实例呢?

第一种才是最应该使用的吧
0 请登录后投票
   发表时间:2009-08-08  

看了大家的恢复之后,发觉第一种和第四种是大家常接触的。

//第1种写法
function Circle(r) {
      this.r = r;
}
Circle.PI = 3.14159;
Circle.prototype.area = function() {
  return Circle.PI * this.r * this.r;
}

var c = new Circle(1.0);  
alert(c.area());


//第4种写法
var Circle={
   "PI":3.14159,
"area":function(r){
          return this.PI * r * r;
        }
};
alert( Circle.area(1.0) );

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics