2016-11-23 41 views
0

所以我做了一個JavaScript對象,它使DOM中的一個元素,以及我使用我的方法,例如播放音頻,設置音頻的持續時間等。然而,我在我的內部製作的一種方法對象顯然不存在。順便說一下,我是新的,所以我不知道我做錯了什麼......但這裏是我的代碼:JavaScript中的方法?

function Audio(paramSource) { 
    var object = document.createElement("audio"); 
    (...) 
    function play() { 
     object.play(); 
    }; 
    (...) 
}; 

var myAudio = new Audio("http://tufda.net/space/limewire.mp3"); 
myAudio.play(); 

在此先感謝:)!

+1

具體不存在什麼方法?僅供參考:'新的音頻'方法肯定已經[存在](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement),你不應該覆蓋它 – adeneo

+0

@adeneo我是好奇的Audio.play()方法,我應該可能指出了 – tufda

回答

1

關閉時,您需要將其作爲屬性分配給對象。事情是這樣的:

function Audio(paramSource) { 
    var object = document.createElement("audio"); 
    //... 
    this.play = function() { 
     object.play(); 
    }; 
    //... 
}; 

的函數可以聲明像變量,併爲Audio對象公開揭露它(而不是隻爲自身的範圍內),您只需將這個變量設置爲一個屬性上this在這個範圍內。

所以在上面的代碼中,object是可變內部的Audioplay範圍上Audio屬性

1

您可以分配給對象的object VAR:

function Audio(paramSource) { 
    this.object = document.createElement("audio"); 
    (...) 
    this.play = function() { 
     this.object.play(); 
    }; 
    (...) 
}; 

var myAudio = new Audio("http://tufda.net/space/limewire.mp3"); 
myAudio.play(); 

通過這種方式,您可以從外部訪問Audio.object