JS高级——歌曲管理

Posted 站错队了同志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS高级——歌曲管理相关的知识,希望对你有一定的参考价值。

1、将歌曲管理的CURD方法放到原型中

2、在构造函数中,我们只有一个属性是songList,因为音乐库不是共有的,如果将songList放入原型中,任何一个人的一次修改songList,都将把songList改变,下一个人new出来的songList就会不一样

3、将CRUD方法放入原型中,好处很多,避免浪费命名污染,避免不必要内存浪费

4、注意当前对象的方法,在调用当前对象的其他方法需要使用this,这个this指代的是当前对象

<script>
    function SongManager(){
        this.songList = null;
    }

    //在当前对象的方法中,调用当前对象的其他方法,需要使用this
    //例如 在 removeSong方法中调用 selectSong  this.selectSong
    SongManager.prototype = {
        init:function (songList) {
            this.songList = songList;
        },

        addSong: function (song){
            this.songList.push(song);
        },

        removeSong:function (songName){
            var song = this.selectSong(songName);
            if(song == null){
                throw "您要删除的歌曲不存在!请重新尝试";
            }
            var index = this.songList.indexOf(song);
            this.songList.splice(index, 1);
        },

        updateSong: function (songName, singer) {
            var song = this.selectSong(songName);
            if(song == null){
                throw "您要修改的歌曲不存在!请重新尝试";
            }
            song.singer = singer;
        },

        selectSong: function (songName) {
            for (var k = 0; k < this.songList.length; k++) {
                var song = this.songList[k];
                if(song.songName == songName){
                    return song;
                }
            }
            return null;
        }
    };

    var pwbDEManager = new SongManager();
    pwbDEManager.init([
        {
            songName:"青藏高原",
            singer:"潘文斌"
        },
        {
            songName:"我的换板鞋,摩擦摩擦最时尚",
            singer:"约翰逊,庞麦郎"
        }
    ]);
    pwbDEManager.addSong({
        songName:"东风破",
        singer:"Jay Chou"
    })

    var gjbDEManager = new SongManager();
    gjbDEManager.init([
        {
            songName:"两只老虎",
            singer:"高金彪"
        },
        {
            songName:"粉刷匠",
            singer:"高金彪"
        }
    ]);
    //        gjbDEManager.removeSong("李白");
    gjbDEManager.removeSong("两只老虎");
    console.log(pwbDEManager.songList);
    console.log(gjbDEManager.songList);
</script>

 

以上是关于JS高级——歌曲管理的主要内容,如果未能解决你的问题,请参考以下文章

JS高级——面向对戏方式解决歌曲管理问题

JavaScript笔试题(js高级代码片段)

歌曲播放页面的数据vuex管理

声音管理器 2 和播放列表自动播放下一首歌曲不起作用

如何在所有活动和片段中使用 MediaPlayer 的单个实例?

如何在列表视图中添加最近播放的歌曲?