QA@IT
«回答へ戻る

回答を投稿

ちょっと使い方や文法は違いますが、Douglas Crockford先生による、エグいアプローチを見つけました。

参考: http://javascript.crockford.com/remedial.html

if (!String.prototype.supplant) {
    String.prototype.supplant = function (o) {
        return this.replace(/{([^{}]*)}/g,
            function (a, b) {
                var r = o[b];
                return typeof r === 'string' || typeof r === 'number' ? r : a;
            }
        );
    };
}

と、プロトタイプを拡張してしまえば、

param = {domain: 'valvion.com', media: 'http://media.valvion.com/'};
url = "{media}logo.gif".supplant(param);

とすれば、urlには、

"http://media.valvion.com/logo.gif"

という文字列が代入されます。

ちょっと使い方や文法は違いますが、Douglas Crockford先生による、エグいアプローチを見つけました。

参考: http://javascript.crockford.com/remedial.html

~~~javascript
if (!String.prototype.supplant) {
    String.prototype.supplant = function (o) {
        return this.replace(/{([^{}]*)}/g,
            function (a, b) {
                var r = o[b];
                return typeof r === 'string' || typeof r === 'number' ? r : a;
            }
        );
    };
}
~~~

と、プロトタイプを拡張してしまえば、

~~~javascript
param = {domain: 'valvion.com', media: 'http://media.valvion.com/'};
url = "{media}logo.gif".supplant(param);
~~~

とすれば、urlには、

~~~
"http://media.valvion.com/logo.gif"
~~~

という文字列が代入されます。