原型的属性里面的方法如何获取到对象?

最近遇到了一个问题,简单地代码如下

    function Mp3() {
        this.songList = [
                            {
                                songName: 'ProblemsProblems',
                                singer: 'Frankie'
                            }
                        ]
    }
    Mp3.prototype = {
                        songManger: {
                            add: function (obj) {
                                this.songList.push(obj);
                            }
                        }
                    };
    var mp3=new Mp3();
    mp3.songManger.add({songName:'',singer:''});

图片说明
困扰我的是,构造函数的原型被替换之后,原型里面有一个属性,这个属性指向一个对象,而这个对象中又有一些方法,在这个代码里面指的add方法。
add方法内使用this获得的是它所存在的对象,也就是songManger,那么问题来了,我如何在add里面获得Mp3的原型(也就是add的爹的爹)?总不能用两次this吧?
因为最后实例化的对象调用的是songManger对象,然后songManger再调用的add放,这样是没办法获取到对象本身的属性(songList)的。

http://www.jb51.net/article/61326.htm

this是songManger这个json对象,根本不是类的实例对象,干嘛要放里面去。。

你要弄Mp3.prototype.songManger.songList指向mp3的songList,由于对象,地址引用,可以直接修改。不过建议你自己搞清楚js的继承来先,不要乱搞一通


    function Mp3() {
        Mp3.prototype.songManger.songList=  this.songList = [
                            {
                                songName: 'ProblemsProblems',
                                singer: 'Frankie'
                            }
        ]
    }