作者fillano (冒牌费大公)
看板Web_Design
标题Re: [问题] JavaScript function的问题
时间Mon Aug 28 11:23:38 2006
※ 引述《flu (Twinkle stars)》之铭言:
: 针对Javascrit
: 我在某文件看见一段叙述,大意是说,如果有像以下这样一段程式码
: function Person(first, last) {
: this.first = first;
: this.last = last;
: this.fullName = function() {
: return this.first + ' ' + this.last;
: }
: this.fullNameReversed = function() {
: return this.last + ', ' + this.first;
: }
: }
: var s = new Person("Simon", "Willison");
: 这样子每次在new Person的时候记忆体也会新产生一份Person的inner function
: 的程式码占住多余的空间(可以用改写prototype function的方式解决)
: 关於产生多於程式码的叙述,真的是所说的那样吗?
: 另外,如果上述没错的话,这似乎跟c++里的new object产生後的结果不一样是吗?
我并不是很确定啦。不过我有写过多边形跟点的constructor,用点来构成多边形
结果用多边形的constructor来产生多边形时,有发现程式占用的记忆体逐渐增加
而且幅度不小。
测试的时候发生意外,就是我用回圈产生多边形物件时,不小心输入错误的数字
结果让firefox企图在程式中产生大概1024*1024个多边形
因为让程式跑以後就离开座位,我回到座位时发现电脑跑很慢
打开工作管理员看一看,发现firefox占用了500多MB的记忆体,而且还在不断增加
如果只是用一个单纯的reference,记忆体增加的幅度应该不会那麽大吧?
他实际怎麽处理function物件的,可能看firefox的javascript引擎的程式会比较清楚
就是了,要不然就是要找一下ECMA-262,但是也不确定firefox或是IE有完全依照
spec来实做。
--
Sapere Aude! 这就是启蒙运动的口号!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.192.103