- stillpedant
- 4449
- 0
- 6
- 0
入ってきた英単語をキーにするオブジェクトを作って tokens[token]++ とかやってたら、token が "constructor" だったのでエラー出てた。まったく予期してなかった。コノ JavaScript 野郎が…
2010-11-17 19:50:09@os0x それ昔に読んだ時は理解できませんでしたがようやくわかりました。if (!tokens.hasOwnProperty(token)) {tokens[token] = [];} tokens[token].push(pkey); を一文で書けたらいいんですが。
2010-11-17 23:06:55@edvakf (tokens[token]&&!blank[token]&&tokens[token].push(pkey)) || (tokens[token]=[pkey]); //blankは空Object。空ObjectはhasOwnPropの代わりになるというネタです
2010-11-18 10:13:24@os0x あ、間違えました。token が 'constructor' だったら2回目以降 !blank[token] が false になって tokens[token]=[pkey] してしまいます。http://jsfiddle.net/f6x3Q/
2010-11-18 10:56:00難しいことわからんので、僕なら tokens[token+"#"] = ++tokens[token+"#"] || 1; で逃げる。
2010-11-18 10:59:38「ハッシュのキーにprefixつけてる前提ならどちらにしろ気にしないでいいけど。 」て書いてた。
2010-11-18 11:00:39@hasegawayosuke 三千万トークンあるのでシンプルにやりたかったのです。{__proto__:null} が一番シンプルだと思いますが、__proto__ は使いたくないのでもう .hasOwnProperty でやることにしました。
2010-11-18 11:01:08