相关疑难解决方法(0)

如何从JavaScript对象中删除属性?

假设我创建一个对象如下:

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI",
    "regex": "^http://.*"
};
Run Code Online (Sandbox Code Playgroud)

什么是去除财产的最好方式regex与新落得myObject如下?

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI"
};
Run Code Online (Sandbox Code Playgroud)

javascript object-properties javascript-objects

5813
推荐指数
39
解决办法
208万
查看次数

垃圾收集如何在JavaScript中运行?

垃圾收集如何在JavaScript中运行?它与.NET垃圾收集类似吗?是因为在VBScript中实现垃圾收集很糟糕,以至于人们避开垃圾收集并建立了对JavaScript作为标准客户端语言的偏好?

javascript vbscript garbage-collection

29
推荐指数
1
解决办法
1万
查看次数

什么时候JavaScript对象被破坏?

在C++中,我可以显式定义构造函数和析构函数,然后在构造函数/析构函数中使用cout <<"C或D Called"来确切知道在哪里.

但是在JavaScript中如何知道对象何时被破坏.以下示例是关注我的案例.

我在超时时调用内部函数,我想知道只要定时器正在运行,对象就会保持活动状态,等待再次调用next.

用户点击呼叫控制

// Calls  Control
Run Code Online (Sandbox Code Playgroud)

控制呼叫消息

var message_object = new Message( response_element );
Run Code Online (Sandbox Code Playgroud)

消息调用效果

new Effects().fade( this.element, 'down', 4000 );
message_object.display( 'empty' );
Run Code Online (Sandbox Code Playgroud)

效果

/**
 *Effects - build out as needed
 *  element - holds the element to fade
 *  direction - determines which way to fade the element
 *  max_time - length of the fade
 */

var Effects = function(  ) 
{
    this.fade = function( element, direction, max_time ) 
    {
        element.elapsed = 0;
        clearTimeout( element.timeout_id …
Run Code Online (Sandbox Code Playgroud)

javascript

25
推荐指数
2
解决办法
2万
查看次数

垃圾收集机制如何运作?

在一个非专业术语中,垃圾收集机制如何工作?

如何识别对象是否可用于垃圾回收?

另外,Reference Counting, Mark and Sweep, Copying, TrainGC算法的意思是什么?

garbage-collection memory-management

23
推荐指数
3
解决办法
9677
查看次数

JavaScript新关键字和内存管理

来自C++,每当我打电话给new我的电话时,我都会感到难以理解delete.在JavaScript中,我发现自己new偶尔在我的代码中调用,但是(希望)浏览器中的垃圾收集功能将为我处理混乱.

我不喜欢这个 - delete在JavaScript中有一个方法,我是如何使用它与C++不同的?

谢谢.

javascript garbage-collection memory-management

21
推荐指数
3
解决办法
8450
查看次数

在Phaser中摧毁精灵

我在Phaser中摧毁精灵时遇到了麻烦.

我有一个JavaScript对象,我们称之为Block.Block有一个sprite属性,设置如下:

this.sprite = this.game.add.sprite(this.x, this.y, 'blocks', this.color);
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某个点,Block由两个不同的数组引用:

square[0] = Block;
destroy[0] = Block;
Run Code Online (Sandbox Code Playgroud)

在某个Update()循环中,我需要销毁精灵,所以我使用以下代码:

square[0].sprite.destroy(true); //Destroy the sprite.
square[0] = null; //Remove the reference.
Run Code Online (Sandbox Code Playgroud)

在下一个Update()循环中,当我查看destroy [0]时,我希望看到:

destroy[0].sprite: null
Run Code Online (Sandbox Code Playgroud)

然而,我所看到的是:

destroy[0].sprite: b.Sprite
Run Code Online (Sandbox Code Playgroud)

属性只是默认并设置为false.我担心的是,如果我现在将destroy [0]设置为null,那个sprite对象会发生什么?

它会浮动还是自动清理?我应该先以某种方式破坏Block对象吗?另外,如果destroy()没有使引用为空,那么它与kill()有什么不同?

任何有关此事的想法将不胜感激.

javascript html5 sprite phaser-framework

17
推荐指数
1
解决办法
1万
查看次数

javascript匿名函数垃圾回收

如果我有这样的功能

function do(callback) {
  //do stuff
  callback();
}
Run Code Online (Sandbox Code Playgroud)

然后我传入一个匿名函数:

do(function() { //do something else });
Run Code Online (Sandbox Code Playgroud)

在页面的生命周期内,是否收集过匿名函数?如果没有,我如何让它可用于GC?

我必须这样做吗?

var h = function() { //do something };
do(h);
delete h;
Run Code Online (Sandbox Code Playgroud)

我甚至不用担心这个吗?我正在构建一个具有较长生命周期的Web应用程序,使得许多ajax调用保持对象一段时间并且实际上并不需要页面刷新来导航.所以我想弄清楚我是否会陷入内存泄漏怪物.

javascript memory-leaks

16
推荐指数
1
解决办法
7128
查看次数

垃圾收集和JavaScript"删除":这是过度/混淆,还是一种好的做法?

我刚读了这个问题和接受的答案: 什么是JavaScript垃圾收集?

在答案中,Noldorin引用了Apple的一些指导原则.这是我关注的部分:

使用删除语句.每当使用新语句创建对象时,请将其与delete语句配对.这可确保与对象关联的所有内存(包括其属性名称)都可用于垃圾回收.

我总是花时间跟上最佳实践的速度,特别是如果我可以减少脚本的内存占用.所以我开始测试一些东西.如果我理解正确,以下是在调用方法后删除自身的对象的示例.

var thing = function () {
    var a_method, and_another;
    a_method    = function() { /* do stuff */ };
    and_another = function() { /* do some other stuff*/ };
    this.init   = function() { a_method(); and_another(); };
};
delete new thing().init();
Run Code Online (Sandbox Code Playgroud)

通常我会将所有内容都包装在一个自调用函数中,并像上面一样传入我的全局变量.一切都和我通常做的一样,唯一的区别是我在delete之前添加了权利new.

代码以任何一种方式工作.

所以问题是:我在这做什么吗?删除对仅存在于函数范围内的对象的引用是否有某种好处?或者我只是让事情看起来令人困惑?

javascript memory garbage-collection object

15
推荐指数
1
解决办法
8000
查看次数

Javascript内存使用管理

我正在构建大型网站,使用大量的javascript,我的所有内容都被加载ajax,它与facebook非常相似,而且由于有很多不同的页面,我需要大量的javascript,所以我想到的是划分我的脚本在各个部分中,每个页面都有自己的脚本文件.

现在加载很简单,我只是为每个页面加载一个新文件,但我担心如果用户通过100个不同的页面加载100个不同的脚本文件会发生什么?

目前我的网站没有那么多页面,但我很确定它将来会在某个时候发展到近100个独特的页面.

那么用较慢的计算机的用户会发生什么?我猜它会开始放慢很多,因为没有刷新.根据我的阅读,不可能以任何简单的方式从加载的脚本文件中卸载所有事件和数据,如果我尝试这样做可能会花费我很多时间和精力来做到这一点.

所以我的问题是,我应该保留它的方式还是尝试做点什么呢?我目前正在使用jquery几个插件,如果我不得不猜测平均文件将是大约50-200行代码,主要是click事件和ajax调用.

请注意,每个页面对象都有它自己的前缀为每个类,例如:home_header,login_header

所以onClick事件监听器和类似的东西之间不应该有任何冲突.

编辑我在这个问题上设置了赏金,我希望听到更多的意见.

javascript jquery javascript-events

14
推荐指数
2
解决办法
3128
查看次数

5种主流浏览器使用哪些垃圾收集算法?

我目前正在重新思考qooxdoo JavaScript框架的对象处理处理.
看看下图(A目前在范围内):

图http://yuml.me/51747906.jpg

假设我们要删除B.通常,我们会删除所有对象之间的所有引用.这意味着我们在示例中切断了连接1到5.这真的有必要吗?
至于我已经阅读这里,浏览器使用的标记-清除算法.在这种情况下,我们只需要切割参考1(与范围的连接)和5(与DOM的连接),这可能会更快.
但我可以确定所有浏览器都使用标记和扫描算法或类似的东西吗?

javascript garbage-collection qooxdoo

11
推荐指数
1
解决办法
938
查看次数