关于JS动态原型的一点疑惑

例1:
[code="javascript"]
var s = function(){
s.name = "black";
s.run = function(){
//do something for this.....
}
}
[/code]

例2:
[code="javascript"]
var s = function(){
s.name="black";
}
s.prototype.run = function(){
//do something for this.....
}
[/code]

偶然浏览到书中,说例1的方法中存在内存泄漏。小弟愚钝,在代码中只能看出
如果 new 100个对象的话,那么使用例1,无非是创建了100个run方法。
而使用例2,只是创建了了100个对象,创建了1个run方法。

可是这和内存泄漏有什么关系呢????
[b]问题补充:[/b]
例1:

var s = function(){
    this.name = "black";
       this..run = function(){
             //do something for this.....
    }
}

例2:

var s = function(){
   this..name="black";
}
s.prototype.run = function(){
  //do something for this.....
}

偶然浏览到书中,说例1的方法中存在内存泄漏。小弟愚钝,在代码中只能看出
如果 new 100个对象的话,那么使用例1,无非是创建了100个run方法。
而使用例2,只是创建了了100个对象,创建了1个run方法。

可是这和内存泄漏有什么关系呢????

呵呵,笔误了。

1.你函数里的s应该是this吧。笔误?
2.泄露是胡扯。只有牵涉到DOM才会存在泄露的可能。如果只有native的js对象都要泄露,浏览器厂商可以剖腹谢罪了。

我对js的内存泄漏研究不深.
不过我好像记得只有在循环引用的情况下才会造成内存泄漏.
像你上面的代码并没有证据说明进行了循环引用.
循环引用是这样的
[code="js"]
var a={d:{}};
var b=a.d;
a.d.b=b;
[/code]
当然真正造成泄漏的话还有其他一些因素.这个我就细说不了了,不是很懂.