Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

この記事の内容はすべてECMAScript5に基づいているのでIE8などでは違う結果になります 以前書いた記事で{toString : valueOf}という記述の意味について考えたのですが、コメントで間違いを指摘して頂いたので改めて書きたいと思います。 今回は簡単のために以下のコードで見ていきます。 var a = { valueOf:function(){ return false; }, toString:valueOf }; document.write(Number(a)); document.write("<br>"); document.write(String(a)); aという変数にvalueOfとtoStringの2つのメソッドを持つオブジェクトをリテラルで設定し、そのaをそれぞれ文字列、数値として評価した場合に表示される内容を確認するコードです。 これを実行すると 0
http://events.html5j.org/conference/2012/09/ function hoge () { alert('ECMAScript valid'); } URLそのまま貼っちゃった!
昨日書いた new を使わないインスタンス生成は、実際に使ってみると、たかだかオブジェクトの生成ごときで Object.create(Hoge.prototype).init(); とか長いし、init呼ぶの忘れそうだし、init メソッド定義しないといけないし、return this 忘れるとハマるしで糞すぎ。 というわけでFunctionを拡張してオブジェクト生成用のcreateメソッドを作ってみる。 Object.defineProperty(Function.prototype, "create", { value: function() { var obj = Object.create(this.prototype); if (obj.init) { // initを持っていれば、イニシャライザとして呼ぶ。 obj.init.apply(obj, arguments); } r
2012年01月06日23:15 カテゴリLightweight Languages javascript - 比較(comparison)と変換(coercion) JavaScript: The Good Parts Douglas Crockford / 水野貴明訳 [原著:JavaScript: The Good Parts] 大事なことなので何度でも言うべきでしょうか。 [javascript]true or false 論理値の挙動については、いまいち感覚的に理解しにくい印象です Crockfordの言う通り、===と!==を使いましょう。 Demo ==と!=がいかに挙動不審かを、実際に表にします。textareaには表に入れたい値を入力してみてください。void(0)と1/0とparseInt('nan')は、確実にundefinedとInfinityとNaNを得るための方
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く