読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

gensym

new Stringの用途を考え、ユニークなキーを生成するgensymを書いた。toString()があるのでobjectのキーとして使用でき、オブジェクトなので===で比較する時は絶対に重ならない。

var gensym = function () {
  var prefix = 'gensym_';
  var id = 0;
  return function () {
    var str = prefix + id++;
    return new String(str);
  };
}();

var JSONP = function (url, callback) {
  var script, head, sym;
  sym = gensym();
  script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = url + '&callback=' + encodeURIComponent(sym);
  head = document.getElementsByTagName('head').item(0);
  head.appendChild(script);
  window[sym] = function () {
    delete window[sym];
    head.removeChild(script);
    callback.apply(this, arguments);
  };
}

var _ = gensym();
Function.prototype.cut = function () {
  var self = this, tmpl = arguments;
  return function () {
    var args = arguments;
    return self.apply(self, Array.prototype.map.call(tmpl, function (o) {
      return o === _ ? Array.prototype.shift.call(args) : o;
    }));
  };
};