タグ

ブックマーク / teramako.hatenadiary.org (5)

  • uncurryThis 関数 - hogehoge @teramako

    http://wiki.ecmascript.org/doku.php?id=conventions:safe_meta_programming にて大変有用な書き方を身に着けた。 Function.prototype.bindとFunction.prototype.callの黒魔術的なもの。 obj.hasOwnProperty("prop"); と書くところをcallで書くと var func = Object.prototype.hasOwnProperty; func.call(obj, "prop"); と書ける。さらにcallをbindしてみると var func2 = func.call.bind(func); func2(obj, "prop"); となる。さらに、bindをbindすると var func3 = func.bind.bind(func.call)(func

    uncurryThis 関数 - hogehoge @teramako
  • メソッド実行時の引数に関数代入の挙動 - hogehoge @teramako

    不思議な挙動だね。 Firefox 8.0 var o = {}; o.hoge(o.hoge = function(){ console.log("hoge"); }); // TypeError: o.hoge is not function o.hoge(); // "hoge" o.hoge(o.hoge = function(){ console.log("HUGA"); }); // "hoge" Opera 11.52 var o = {}; o.hoge(o.hoge = function(){ console.log("hoge"); }); // TypeError: o.hoge is not function o.hoge(); // "hoge" o.hoge(o.hoge = function(){ console.log("HUGA"); }); // "ho

    メソッド実行時の引数に関数代入の挙動 - hogehoge @teramako
    koshinishiki397
    koshinishiki397 2011/11/16
    いつでもプロパティに代入できちゃう言語だし、()演算子内で呼び出し時点では存在しない関数追加してメソッド呼び出しすら自在なの、とビビってた。ちゃんとどっちを先に評価すべきかまで仕様で決まってると安心です
  • ECMAScript 6th, Harmony と JS++ - hogehoge @teramako

    Web Reflection: ES6, Harmony, and JS++ http://www.3site.eu/JSNext.pdf [PDF] 内容がとても面白い。 Mozilla JavaScripterなら知っているものは多そうだが。 SpiderMonkeyで独自に採用されているものが将来的にECMAScriptに採用されて仕様に載ると良いなと思う。 ということで内容を紹介と個人的メモ ブロックスコープ let JavaScriptで変数宣言というと、var一択で、これは関数ブロックに対するスコープとなり、真のブロックスコープは存在しない。 ということでletってのが登場。 for文、ifのブロック内でのスコープを提供できるよ。 for (let i = 0; i < 3; i++){ // ...; } typeof i; // undefined iはfor文内のみのスコ

    ECMAScript 6th, Harmony と JS++ - hogehoge @teramako
  • やっぱり体感速度 - hogehoge @teramako

    Firefoxより速いGoogleChromeだが、 BarTapとかopener.jsとかインストールすると快適すぎて、とうとうchromeを使うこともなくなった Twitter / tyru: BarTapとかopener.jsとかインストールす ... というTwitter投稿があり、あぁなるほど、と思った。 BarTapというのはBarTab :: Add-ons for Firefoxで、Firefox起動時のタブ読み込みのタイミングを遅らせる(タブを選択した時にコンテンツの読み込みがされるようになる)拡張機能でタブをたくさん開いていると起動がもたついてイラつくという人には嬉しい拡張 opener.js というのは VimperatorのプラグインでURLを開こうとしたとき、既にそのページを開いているタブがあったらそのタブにフォーカスするというもの。 単純に言えば、Firefox

    やっぱり体感速度 - hogehoge @teramako
  • userChrome.css でブックマークツールバーフォルダをスマートに - hogehoge @teramako

    Firefoxのブックマークバーをアイコンでスマートにする機能拡張「Smart Bookmarks Bar」 おぉこれは良いアイデア。ただ、アイコンがあるページなら良いが、無い場合何のサイトか分からなくなる罠。アイコンが設定されていないものにはラベルを表示させておきたいのだ。 と、いうことで自作。DOM Inspectorと睨めっこして、userChrome.cssに以下を記述。 @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* ブックマークツールバーフォルダをスマートに {{{ */ hbox#bookmarks-ptf toolbarbutton[type="menu"] .toolbarbutton-text { display: none !important; }

    userChrome.css でブックマークツールバーフォルダをスマートに - hogehoge @teramako
  • 1