JavaScript
ES6になると、String.prototype.repeatのメソッドが追加されるわけだが、そのアルゴリズムとパフォーマンスを追ってみている。ES6 String.prototype.repeat の仕様では以下の様な感じでシンプルな書き方をしている。 countが 0 より小さい、または 無限大で…
書くのが1週間ほど遅れた。 979865 - Implement ES6 array and generator comprehensions 12.1.4.2 Array Comprehension 12.1.7 Generator Comprehensions var arry = [for (value of iteratableObject) value]; // ArrayComprehension /* == (function() { …
【JavaScript】オブジェクトをキーでソートする方法 | Web制作会社スタイル 上記リンク先の手法は、新たなオブジェクトにキーを配列に入れてソートした後、その順にプロパティ値として入れる方法だ。が、この方法では完全にソートすることはできない。仕様的…
"object" "string" "number" "undefined"
928508 – String.prototype.@@iterator (and thus for-of) incorrectly iterates over code units rather than Unicode characters ちょいと面白いものが実装されて、String.prototype["@@iterator"]がアップデートされてた。"@@iterator" というのは、ECMAS…
Google Chromeに入ったジェネレータとPromiseで非同期処理に革命が起きた - 素人がプログラミングを勉強していたブログ javascripter さんの記事ではPromise実装としてjQueryのを使用しているけど、Fx では DOM Promise が使えるので、それに合わせて書きな…
ちょっと前に、Generator のプロトタイプ で書いたが、function * () { yield ...; } な構文が導入された。また、最近ユーザ作成の Generator.next() が { done: Boolean, value: Value } なオブジェクトを返すように変更された。*1 function * gene () { fo…
Firefox 26.0a1 (Nightly) @@iterator 実装なし 代わりに iterator メソッドを定義するとOK(仕様外) __iterator__ というものもあるが、for-of とは無関係(独自実装) GeneratorObject の next メソッドは値を返すのみで{ done: ..., value: ... }な値を…
記事とは関係ない質問なのですが __proto__にnullを設定した場合のみ 以降のinstanceof演算子の挙動が変わるのは仕様なのでしょうか FirefoxとChromeで確認しました o = {} o.__proto__ = Object.prototype o instanceof Object //true o.__proto__ = {} o._…
結論から言うと、単なる格好付けです。以下説明。主要なJavaScript (ECMAScript 5th)では、functionは2種類あります。 文(Statement) *1 式(Expression) です。所謂、「即時関数」と呼ばれるものはfunctionは式(Expression)である必要があります。何故なら、…
function setButtonHandler () { var buttons = document.querySelectorAll(".hogeButton"); for (var i = 0, len = buttons.length; i < len; ++i) { (function(n) { buttons[i].addEventListener("click", function() { alert(n); }); }(i)); } } って感じ…
856410 - Implement promises DOM Future ではなく、すでに、Promise に名前が変わっているけど、実装されたのは Future 。 This feature used to be called futures. 4 Promise - DOM Standard テストコード: mozilla-central mozilla/dom/future/tests/tes…
[JavaScript] tr要素 の display プロパティを用いた表示切替えについて | Blog | Development Reference を読んで、display = "block" はアカンやろ、と思ったので書いておく。 <div id="foo"> <p>FOO</p> </div> div#foo を JavaScript から表示/非表示をするには。 ダメパターン func…
869996 – Set.prototype.{keys, values, entries} 875433 – iterator methods of [Array, Map, Set].prototype should be same function object as entries/values Array.prototype values() Map.prototype keys() values() entries() Set.prototype keys() …
func1 から func10 までのどれが「クロージャ」でしょうか? var scope = "global"; function func1 () { return scope; } var func2 = function () { return scope; }; var func3 = new Function("return scope;"); function foo () { var scope = "functio…
問題:どれが「クロージャ」でしょうか? - hogehoge の回答期待させて申し訳ないですが、はっきりとした解等を定めていません。ということで解答ではなく、回答で。クロージャの定義を以下の様に定めました。 引数以外の変数を実行時の環境ではなく、自身が…
[JavaScript]for 内でイベントリスナとか登録するときにやっちゃいがちな間違い. とその対処法を3つほど. | TM Life 対応その2: event.targetを使う と 対応その4 : this を使う について上記サイトで書いてあることが間違っているというわけじゃないんだ…
658266 - [Harmony]Proxy: 'this' in getter/setter doesn't indicate the proxy object DirectProxyになる前に上げたバグ*1なのでちょっとコードが古いけど、回答が付いて気付かされた。Proxy通過時の this の問題 var obj, handler, proxyObj; obj = { _na…
28.0.1500.3 (Official Build 198635) dev-mで確認以前確認した時はまだDataDescriptorだったから、また変更されたみたい。 > Object.getOwnPropertyDescriptor(Object.prototype,"__proto__") Object {get: function, set: function, enumerable: false, co…
主に2種類あると思う。 switch (expr) { case expr1: break; case expr2: break; default: // ... } と switch (expr) { case expr1: break; case expr2: break; default: // ... } ボクは、前者がお勧めだと思っている。jslint ? そんなの知りません。 vim…
Firefox Nightly (22) に ES6のArrow Function来たる - fragmentary ということで、早速試しているわけです。 基本 var f1 = () => "OK"; // 引数なしの場合は、"()"が必須 var f2 = arg => arg + 1; // 引数一つなら、"()"は省略可 var f3 = (arg1, arg2) =…
https://mail.mozilla.org/pipermail/es-discuss/2013-March/029259.html で気付かされた。Firefox なら Object.setPrototypeOf を作ることができる。Firefox、というよりも、SpiderMonkey なのだが、Object.prototype.__proto__がgetter/setterで定義されて…
ChromeのExperimental WebKit/JavaScript Features - fragmentary Experimental JavaScript Features の方に Symbol が使えると書かれていたので早速。Symbol ってのはなんて言うか、固有のプロパティのキーになれるもの?っていう説明で良いのかな。 var s …
今のところAPIがあるのが、Firefoxのみかもだけど。単純に、window.btoa("あいうえお")とすると、InvalidCharacterError: String contains an invalid characterと例外が発生する。Encoding StandardのTextEncoder、TextDecoderが使えるなら、以下のように書…
window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…
Array#indexOf(item) !== -1をやって存在を確認するのが、どうにも速い気がしなくてやってみた。とりあえず、Array.indexOf vs Set.has · jsPerfで速度確認。Set#hasが圧倒的に速い。かと言って、単純な Set では以下の点で使いづらい 値の順番操作が面倒 入…
var o = JSON.parse('{"__proto__": null}'); console.log( Object.prototype.hasOwnProperty.call(o, "__proto__"), Object.getPrototypeOf(o), o instanceof Object, Object.getPrototypeOf(o) === Object.prototype ); Browser hasOwnProperty instanceof…
function getJSengine() { if (!("__proto__" in Object.prototype)) { if (typeof Object.getPrototypeOf === "undefined") return "JScript(IE8-)"; else return "JScript(IE9+)" } var o = JSON.parse('{"__proto__":null}'); if (!(o instanceof Object)…
804834 - Hide "for each" from content for each構文はE4Xの構文とはいえ、JavaScript 1.6から定義されたものなので、バージョン1.6以上を指定したもの以外は実行できなくしようというもの。791343 -disable for-each statement on javascript.options.xml.…
ES-Discuss のメーリングリストで知った。 Object.prototype.get = function(){}; var o = {}; Object.defineProperty(o, "hoge", { value: "OK" }); // TypeError: property descriptors must not specify a value or be writable when a getter or setter …