English 中文(简体)
Java: • 保存多处 j印物在完工后不再处置?
原标题:JavaScript: Keep multiple instances of javascript objects from disposing after completion?

I have the following code:

$(document).ready(function() {

    $( .container ).ready(function() {

        var v = new Video($(this));
        v.load();

    });

});

我怎么能够回避自己? 初始类别负荷3项变量:video,source/code>和s。 当点击或事件聆听者要求其发挥作用并试图接触其中任何一个人时,由于他们后来被销毁,它无法做到。

我如何处理这个问题?

更样本代码:

$.Class( Video , {
    init: function(container) {
        this.video = container.find( .video );
        this.source = this.video[0];
        this.controls = {
            // ...
            total: container.find( .total ),
            buffered: container.find( .buffered )
        };
    },
    load: function() {
        this.source.addEventListener( progress , function() {
            var buffered = Math.floor(this.source.buffered.end(0)) / Math.floor(this.source.duration);
            this.controls.buffered.width(Math.floor(buffered * this.controls.total.width()));
        }, false);
    }
});
最佳回答

Java的变形功能范围很广,因此,如果退电功能转至(......) $(......)出走,你在该功能中宣布的变数,即超出范围,有资格领取垃圾收集。

避免这种情况的一个途径是宣布一个全球变量,并储存你的录像物体。 例如:

var v;  // Global, because it is declared outside any function
$(document).ready(function() {
    $( .container ).ready(function() {
        v = new Video($(this));
        v.load();
    });
});

当然,全球变量在 Java文中至少是像任何其他语言(可能更多)一样的麻烦。 最佳做法是,在您整个网页/申请中申报一个全球变量,一个物体,并在该物体内储存任何和所有您的持久性数据。 你们想给这个独一无二的全球名字,以便与你可能使用的任何第三方文字发生冲突。 我愿利用 Java名空间利用与工作相关的已登记域名作为独特的标识。 因此,如果您或雇主拥有域名,即:

if (! window.examplename) {
    window.examplename = {};
}
examplename.videos = [];

...

$(document).ready(function() {
    $( .container ).ready(function() {
        var v = new Video($(this));
        v.load();
        examplename.videos.push(v);
    });
});

在贵国法典的其他部分,可使用类似录像物体:

$.each(examplename.videos, function(idx, vid) {
        vid.someMethod();
    });
问题回答

你们需要不断提及。 你们应当有一个称呼空间和储存模型物体。

window.App = {}; // global object literal acting as a cache lookup

App[video.id] = video; // store the object when its created.

如果你这样做,你可以总是以粗略(或其他一些确定参数)来看待物体。 如果你只需要把这个目标放在一起,那么就把它放在全球范围,从它的宣言中删除<代码>var

采用老鼠宣布变量为当地变量。 否则,你就应该oka。

v = new Video($(this));

如果你想要活着的物体,就必须从仍然可以达到的范围中获取。 例如,你可以转让作为全球物体的财产。

单字母变量的范围受其功能的约束(即<代码>var)。 如果没有<代码>var,则该编码属于全球范围。

因此,问题实际上不是如何停止处理,而是如何确保在你希望的情况下可以处理。

如果你想要在任何地方都绝对能够进入(hint:你可能不会, j中的全球变数是常见的错误来源),那么就简单地删除了<代码>var<>。

如果你希望能向<代码>(文件)要求的其他职能提供。 <>现成/代码>,然后将<代码>var v移至此处,从而将照此办理。

$(document).ready(function() {
    var v;
    $( .container ).ready(function() {

        v = new Video($(this));
        v.load();

    });

});

一种共同的技术是使用匿名功能,为你希望从多种功能中获取的任何变数创造更广泛的空间,而不会使其完全全球化:

(function(){
     var v, f0, f1;

     f0 = function (){
       v = 1;
     };

     f1 = function (){
       v += 1;
     };
}());




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签