zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    如何用C++操作无线网卡开启共享热点WiFi?
    delphi中的copy函数和pos函数
    C#使用WinAPI 修改电源设置,临时禁止笔记本合上盖子时睡眠(使用PowerGetActiveScheme等函数,以及C#对WINAPI的调用)
    发布Qt Widgets桌面应用程序的方法(自定义进程步骤,用QT Creator直接生成)
    认识TDD
    基于Bootstrap的Asp.net Mvc 分页
    Chrome控制台 JS调试
    英语学习
    JavaScript中的作用域和声明提前
    LeetCode: Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/8340902.html
Copyright © 2011-2022 走看看