Search code examples
javascriptsoundcloudsoundmanager2

undefined of something that is clearly defined


this must be some JavaScript concept that I am not grasping yet..

For some odd reason the id of thisSound returns undefined! why??

console.log("o: "+o.id+" - "+decodeURI(soundURL));
// create sound
thisSound = soundManager.createSound({
    id:o.id,
    url:decodeURI(soundURL)
});

console.log("thisSound: "+thisSound.id+" - "+thisSound.url);

the console :

o: Sound0 - http://api.soundcloud.com/tracks/76673175/stream?client_id=e992d357c0914e9b65ba17f459720fc0

thisSound: undefined - http://api.soundcloud.com/tracks/76673175/stream?client_id=e992d357c0914e9c65ba17f459720fc0   

Solution

  • The code you provided doesn't “obviously” define the id of the returned object.

    // create sound
    thisSound = soundManager.createSound({
        id:o.id,
        url:decodeURI(soundURL)
    });
    

    Let's say I write the function createSound for you:

    var soundManager = {
      createSound: function (options) {
        // do internal magic here
        createSound(options);
        // return public API here
        return {
          getId: function () {}
        }
      }
    };
    

    So, my point here is that if there is a third-party function, you should follow the docs of whoever created that function, and SoundManager apparently doesn't return an object with id property defined on it. It “returns a SMSound object instance” – and what is that object, please find out in the docs.