Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模糊上创建对象-但仅创建该对象一次_Javascript_Jquery - Fatal编程技术网

Javascript 在模糊上创建对象-但仅创建该对象一次

Javascript 在模糊上创建对象-但仅创建该对象一次,javascript,jquery,Javascript,Jquery,我需要在onblur事件发生时创建一个新对象: function example(item) { this.item = $(item); this.item.blur(function() { var self = this; new testObject(self.item); } } 但是我只想创建testObject一次。我不希望每次发生模糊事件时都有一个新对象。我想以某种方式创建一次,然后在后续的模糊中运行存储的对象。运行存储

我需要在onblur事件发生时创建一个新对象:

function example(item) {

    this.item = $(item);

    this.item.blur(function() {
        var self = this;
        new testObject(self.item);
   }
}

但是我只想创建testObject一次。我不希望每次发生模糊事件时都有一个新对象。我想以某种方式创建一次,然后在后续的模糊中运行存储的对象。

运行存储的对象是什么意思?您正在创建一个对象。你的意思是如果它不存在,就创建它?如果是这样,那么:

var testObjectInstance = null;
function example(item) {
    this.item = $(item);

    this.item.blur(function() {
        var self = this;
        if (!testObjectInstance) testObjectInstance = new testObject(self.item);
   }
}
您还可以确保只执行一次事件处理程序:

var testObjectInstance;
function example(item) {
    this.item = $(item);

    this.item.one('blur', function() {
        var self = this;
        testObjectInstance = new testObject(self.item);
   }
}

jQuery对象的one()方法将处理程序绑定到事件,但在它执行一次后会自动解除绑定。

您可以使用闭包中捕获的变量作为事件处理程序:

function example(item) {

    this.item = $(item);
    var testobj = null;
    var self = this;

    this.item.blur(function() {
        if (testobj === null) {
            testobj = new testObject(self.item);
        }
        // ... here use testobj ...
    });
}
请注意,
self=this
可能应该放在闭包之外,因为现在在示例代码中使用它没有多大意义