关于javascript的下面对象的写法,该如何处理

关于javascript的下面对象的写法方法一JScript codefunction kk(){this.i0}kk.prototype.addfunction(){

关于javascript的下面对象的写法
方法一

JScript code
function kk(){    this.i=0    }    kk.prototype.add=function(){        alert(++this.i)        }    kk.prototype.clear=function(k){        this.i=k        }        var p=new kk()    p.add();    p.add();    p.clear(12)    p.add();        })


方法二
JScript code
var a=function(){      var i=0;      return {          add:function(){alert(++i)},          clear:function(k){i=k}          }    }()    a.add()    a.add()    a.clear(12)    a.add()


问题:
对于方法一,方法二我都可以建立自己的属性和方法,那哪种写法更好更标准?或者说这两种写法个适用于什么样的情况下。


[解决办法]
ECMAScript 定义类或对象
[解决办法]
对第一种情况类似于java类,可以new N多个对象,推荐 javascript王者归来 这本书你去看看,在该书的134-136页有详细的解释