Skip to content Skip to sidebar Skip to footer

I Need To Set A Json Object Property In A Object, Then Reference That Property From Another Object In The Same Object

I have this issue, I want to be able to change the audio being used based on the browser. What I have is an object seen below, which has a 'ext: { sound: '.mp3' }', at some point I

Solution 1:

what your trying to do is not possible.

the object has to be initialized before its values can be referred to

you could use a function inside the object.

or change the initial val of StAd0.src to '' or 'ar/55871' then reset that value after you set the var object; to object.StAd0.src = 'ar/55871'+ object.ext.sound;

varobject= {
ext: {
    sound:'.mp3'
    },
pref: {
    acc:1
},
StAd0: {
    from:25,
    to:180,
    src:'ar/55871',
    du:5228
},
Image_33: {
    type:15,
    from:4,
    to:48,
    rp:0,
    rpa:0,
    mdi:'Image_33c',
    trin:6,
    trout:6,
    ef: {}
},
Image_33c: {
    b: [171, 259, 850, 360],
    ip:'dr/7029_679_101.png',
    dn:'Image_33',
    visible:1,
    accstr:'Image ',
    vb: [171, 259, 850, 360]
}
};object.StAd0.src='ar/55871'+object.ext.sound;

Solution 2:

Then src must be a function.

varobject= {
    ext: {
        sound:'.mp3'
        },
    pref: {
        acc:1
    },
    StAd0: {
        from:25,
        to:180,
        src:function() {
            return'ar/55871'+this.ext.sound;
        },
        du:5228
    },
    Image_33: {
        type:15,
        from:4,
        to:48,
        rp:0,
        rpa:0,
        mdi:'Image_33c',
        trin:6,
        trout:6,
        ef: {}
    },
    Image_33c: {
        b: [171, 259, 850, 360],
        ip:'dr/7029_679_101.png',
        dn:'Image_33',
        visible:1,
        accstr:'Image ',
        vb: [171, 259, 850, 360]
    }
}

But you must get src like this,

object.stAd0.src();

EDIT:

There isn't anyway to do it without a function, because if you try that like this,

src: ar/55871+ this.ext.sound;

that will work only once at parse-time. Than it will have a static value inside.

If you can't change all src properties to function, you can get it like this as well.

var src = (typeofobject.StAd0.src == "function")? object.StAd0.src() : object.StAd0.src;

So If src is defined as a function, it will call it else will take it like a property.

Solution 3:

This should work, give it a try:

varobject = {
  ext: { sound: '.mp3' },
  StAd0: { src: 'ar/55871'+ object.ext.sound }
}

Post a Comment for "I Need To Set A Json Object Property In A Object, Then Reference That Property From Another Object In The Same Object"