我正在尝试创建一个简单的应用程序,从数据库中检索youtube歌曲数据,并将其显示在列表中。
以下是Track对象的基本内容:
function Track(title, artist, genre, length, videoId) {
this.title = title;
this.artist = artist;
this.genre = genre;
this.length = length;
this.videoId = videoId;
}
注意:videoId只是播放器使用的唯一字符串。
现在,我创建了一个带有公共API的模块,可以处理所有youtube播放器功能。如下所示:
var player = (function() {
function playVideo(videoId) {
youtubePlayer.playVid(videoId);
}
// ... other player functionality ...
return {
playVideo: function(videoId) {
return playVideo(videoId);
}
}
})();
(我只是在上面编写youtube的API,我忘记播放视频的实际代码是什么,但它类似于此类)
现在,我想在Track对象中添加一个函数来播放该音轨。当用户点击该曲目的播放按钮时,我将调用此方法。如下所示:
Track.prototype.playVideo = function(player) {
player.playVideo(this.videoId);
}
基本上,我将我创建的'player'模块传递给prototype方法,然后使用它来使用API播放特定Track的视频。
可以这样做,还是被认为是不好的做法?从本质上讲,它在原型属性中创建了对外部模块的依赖。
如果这是不好的做法,那么解决这个问题的更好方法是什么?
感谢您对此的任何见解:)