2015-07-18 104 views
0

因此,我不想預覽一些UI效果,而無需用戶刷新其客戶端。我想通過創建我的Anim對象的新實例來完成此任務,該對象使用簡單的構造函數進行定義。從它的構造函數中創建新的對象實例

function Anim(elem) { 
    this.elem = elem 
} 

Amin.prototype.zoomIn = function() { 
// Do stuff 
}, 

Amin.prototype.zoomOut = function() { 
// Do stuff 
} 

// obj is a jQuery object, like $('div'); 
var instance = new Anim(obj); 

到目前爲止很好,但是如何創建一個遠離構造函數的對象的新實例?

這是在不同的文件,試圖創建一個新的實例,只是爲了預覽它的用戶。我收到一個錯誤,告訴我說:

動畫沒有被定義

我得到它的出的範圍,但我做如何使用?

$('span').on('click', function() { 
    new Anim($('div')); 
}); 
+1

所以'Anim'超出範圍...你是如何包括第一個文件? – elclanrs

+0

Anim被定義爲插件,沒有命名空間,單獨的文件。 – piggypig

+2

確保'Anim'可以從你的其他文件所在的任何範圍訪問,並且'Anim'也是在'New Anim'執行時定義的。 –

回答

1

這裏最好的方法是定義你的Anim對象作爲一個模塊,看看AMD (Asynchronus Module Definition),那麼你可以導入我們的js文件無處不在,使用對象的新實例:

define(function(){ 
    var Anim = function(elem) { 
     this.elem = elem; 
     this.zoomIn = function() { 
      // Do stuff 
     }; 

     this.zoomOut = function() { 
      // Do stuff 
     } 
    } 
    return Anim; 
}); 

把它放在afile叫它Anim.js

然後就包含這個文件在你的HTML頁面或任何其他JS文件,並創建Anim對象的新實例:

define([pathToyourFile.Anim],function(Anim){ 
    $('span').on('click', function() { 
     var instance = new Anim($('div')); 
    }); 
}); 

更多信息有關AMD模塊,看一看:

+0

太棒了,這種方法總是有意義的。去解決這個問題,謝謝! – piggypig

+0

非常高興它有幫助,確實非常強大,幾乎所有新的JavaScript庫都基於它。 –

+0

我現在正在閱讀。好東西 :) – piggypig

相關問題