121
rated 0 times
[
124]
[
3]
/ answers: 1 / hits: 78179
/ 15 Years ago, thu, august 20, 2009, 12:00:00
I want to create a string and pass it by reference such that I can change a single variable and have that propagate to any other object that references it.
Take this example:
function Report(a, b) {
this.ShowMe = function() { alert(a + of + b); }
}
var metric = new String(count);
var a = new Report(metric, a);
var b = new Report(metric, b);
var c = new Report(metric, c);
a.ShowMe(); // outputs: count of a;
b.ShowMe(); // outputs: count of b;
c.ShowMe(); // outputs: count of c;
I want to be able to have this happen:
var metric = new String(count);
var a = new Report(metric, a);
var b = new Report(metric, b);
var c = new Report(metric, c);
a.ShowMe(); // outputs: count of a;
metric = new String(avg);
b.ShowMe(); // outputs: avg of b;
c.ShowMe(); // outputs: avg of c;
Why doesn't this work?
The MDC reference on strings says metric is an object.
I've tried this, which is not what I want, but is very close:
var metric = {toString:function(){ return count;}};
var a = new Report(metric, a);
var b = new Report(metric, b);
var c = new Report(metric, c);
a.ShowMe(); // outputs: count of a;
metric.toString = function(){ return avg;}; // notice I had to change the function
b.ShowMe(); // outputs: avg of b;
c.ShowMe(); // outputs: avg of c;
alert(String(metric).charAt(1)); // notice I had to use the String constructor
// I want to be able to call this:
// metric.charAt(1)
The important points here:
- I want to be able to use metric like it's a normal string object
- I want each report to reference the same object.
More From » string