+ JavaScript の質問用スレッド vol.108 +

このエントリーをはてなブックマークに追加
952Name_Not_Found:2013/09/21(土) 13:00:55.95 ID:???
>>930
この件ですが、とても恥ずかしい勘違いをしていることに気がつきました
半年ROMることにします
953Name_Not_Found:2013/09/21(土) 13:05:07.98 ID:???
君はコスモを感じたか
954Name_Not_Found:2013/09/21(土) 13:20:16.40 ID:???
Proxyを使えば全ての関数がメソッドチェーン意識した設計でなくても大丈夫よ
もしくは
new MethodChain(APIs)
みたいにする方法でもいくらかいける
955Name_Not_Found:2013/09/21(土) 14:30:21.28 ID:???
文字列の末尾が/だったらそれを削除する時
s = s.replace(/\/$/,'');
より簡潔あるいは速い書き方ありますか?
956Name_Not_Found:2013/09/21(土) 14:31:29.45 ID:???
>>952
これはもちろん偽者です
957Name_Not_Found:2013/09/21(土) 14:52:36.44 ID:???
もうあきた
958Name_Not_Found:2013/09/21(土) 14:54:03.48 ID:???
>>1も読まずに質問者としての最低限のルールも守らずID晒さなかった時点で偽物も本物も無えよ
どっちにしろクズ
959Name_Not_Found:2013/09/21(土) 15:00:03.58 ID:???
>>955
if ('/' === s.charAt(s.length - 1))
 s = s.slice(0, -1)

簡潔ではないがこっちの方が早いと思う
960Name_Not_Found:2013/09/21(土) 15:00:37.02 ID:???
じゃあ、回答者のリテラシーを信用しますね
961Name_Not_Found:2013/09/21(土) 15:08:17.92 ID:???
>>959
http://jsperf.com/regex-v-s-slice

そちらの方がかなり速かったです
ありがとうございました
962Name_Not_Found:2013/09/21(土) 15:27:21.07 ID:???
>>959
それなら
if(s.endsWith('/'))
の方が簡単だし良くない?
963Name_Not_Found:2013/09/21(土) 15:35:07.75 ID:???
endsWidthとかstartWithなんてあったんですね
よくあるケースなのでうれしい機能です
でもchromeでは動かないようです
MDNを見ても記事がなんか古いような
便利なメソッドなのに、歴史の彼方に消え去ってしまった・・?
964Name_Not_Found:2013/09/21(土) 15:35:40.44 ID:???
>>962
まだほとんど実装されてない機能だからなあ…
利用できるようになればそっちのほうが明らかにいいだろうけど。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
965Name_Not_Found:2013/09/21(土) 15:38:42.80 ID:???
ES6で実装されるのかぁ
はよこいES6
966Name_Not_Found:2013/09/21(土) 15:48:53.44 ID:???
ChromeやNodeでも使えるよ
967Name_Not_Found:2013/09/21(土) 15:54:35.26 ID:???
すまないが次スレは俺に立てさせてくれ
968Name_Not_Found:2013/09/21(土) 16:09:59.25 ID:???
昔のテキストで node.jsのサンプルに require.paths.push(__dirname)で設定するところがあるんだけど、
require.pathsが廃止になっていて動かなくなってる。
代わりにmodule.paths.pushが使えると書いてあったので試したところ、別のファイルでrequireするところで失敗。
module.pathsの設定は引き継がれないみたい。

なので、windowsの場合、環境変数NODE_PATHで設定すればなんとか動いたけど、なんかもっとスマートな方法ないのかな?
969Name_Not_Found:2013/09/21(土) 16:15:48.52 ID:???
module.paths.push(process.env.HOMEPATH+'/node_modules');
970Name_Not_Found:2013/09/21(土) 16:16:25.78 ID:???
node.jsはスレ違いだろ・・
971Name_Not_Found:2013/09/21(土) 16:22:16.89 ID:???
JSは基礎仕様とホストAPIとエンジンが政教分離してるから強い
972Name_Not_Found:2013/09/21(土) 16:55:57.80 ID:???
node.jsはWEBプログラミング板のここか

サーバーサイドJavaScript総合
http://kohada.2ch.net/test/read.cgi/php/1210836132/

ほとんど死にかけてるけど
973Name_Not_Found:2013/09/21(土) 17:00:28.33 ID:???
プログラム板にもスレあったよ
974Name_Not_Found:2013/09/21(土) 17:03:38.45 ID:???
【node.js】サーバサイドjavascript 2【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1358937029/
これか
975Name_Not_Found:2013/09/21(土) 17:12:33.35 ID:???
ちゃんと毎日チェックしてるぞ
976Name_Not_Found:2013/09/21(土) 17:16:36.37 ID:???
>>969
それではうまくいきませんでした。

サーバー起動スクリプトの設定なんですけど、
require.paths.push(__dirname + "/lib");←廃止
module.paths.push(__dirname + "/lib");←/lib以下のファイルでrequire失敗

ttp://blog.fkei.me/2012/01/nodejs-v06requirepathssearch-path.html
ここを参考にしてprocess.env['NODE_PATH']を設定したらうまくいくようになりました。

スレ違いになるようなのでここまでにします。お騒がせしました。
977Name_Not_Found:2013/09/21(土) 17:19:08.93 ID:???
それはファイルの配置方法がおかしいだけだな
978Name_Not_Found:2013/09/21(土) 17:41:23.26 ID:???
ちゃんとindex.js書いてそこで読み込んでるか?
979Name_Not_Found:2013/09/21(土) 20:43:49.54 ID:???
メソッドチェーンの話

http://underscorejs.org/#tap

> tap_.tap(object, interceptor)
> Invokes interceptor with the object, and then returns object.
> The primary purpose of this method is to "tap into" a
> method chain, in order to perform operations on intermediate results within the chain.
>
> _.chain([1,2,3,200])
> .filter(function(num) { return num % 2 == 0; })
> .tap(alert)
> .map(function(num) { return num * num })
> .value();
> => // [2, 200] (alerted)
> => [4, 40000]

var b = _("a").tap(console.log).value().replace(/a/, 'b');
980Name_Not_Found:2013/09/21(土) 20:51:29.79 ID:???
>>983

polyfillとかshimとかで検索しろ。
新しい言語仕様ではなく、
単に関数レベルのものなら
ライブラリ一つで簡単に使えるようになる。

http://openweb.co.jp/2013/01/18/%E6%B0%97%E3%81%AB%E3%81%AA%E3%82%8B%EF%BC%81%E5%A4%A2%E3%81%8C%E3%81%82%E3%82%8B%EF%BC%81javascript-next-ecmascript6-1-es6%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E9%96%A2%E6%95%B0/
981Name_Not_Found:2013/09/21(土) 21:12:35.16 ID:???
>>979
だめね。やり直し。
982Name_Not_Found:2013/09/21(土) 21:20:24.03 ID:???
子から親の参照を得られるオブジェクトモデルないですか?
キーの連続をパス化したものをインデックスにするモデルにしているのですが、
特定オブジェクトを検索してパスの集合を得る
→オブジェクトツリーに挿入などの操作を加える
→パス情報が更新される
→先に検索しておいたパス情報が不正確になる
という問題があります
オブジェクトツリーを更新しても検索結果が簡単には古くならない
そんなモデルはないものでしょうか
983Name_Not_Found:2013/09/21(土) 21:24:31.09 ID:???
>>981
chainメソッドが抜けてるんだなたぶん

firefoxはこれが動くんだなあ
b = _.chain("a").tap(console.log).value().replace(/a/, 'b');

chromeはこうしないとダメだわ
b = _.chain("a").tap(function(x){console.log(x)}).value().replace(/a/, 'b');
984Name_Not_Found:2013/09/21(土) 21:26:29.85 ID:???
すべての値がgetParentメソッドを持っている
そんなオブジェクトモデルは可能なのでしょうか
985Name_Not_Found:2013/09/21(土) 21:39:21.01 ID:???
不可能です
986Name_Not_Found:2013/09/21(土) 22:05:10.04 ID:???
全てはオブジェクトなので上書きできるそうですが
alert()でアラートを出さないでconsole.logを出すように拡張したいんですが
window.alert = function(n){console.log(n);}
ってやりました。
そこで、やっぱり元のアラートを出す動作に戻したいのですが、
どうやってもどすのでしょうか?
仕様として元に戻せますかね?
ブラウザのリロードすればいいというのはなしです
987Name_Not_Found:2013/09/21(土) 22:09:14.85 ID:???
変数にコピーして取っておけば?
988Name_Not_Found:2013/09/21(土) 22:10:19.95 ID:???
規格は見てないけどconsole.logのlogはstaticじゃなくて
プロトタイプ経由のメソッドであるべきなんじゃないかな?
ならthisが重要だからChromeの挙動で合ってるような気がする
989Name_Not_Found:2013/09/21(土) 22:17:11.15 ID:???
>>986
現実:
キャッシュするか、iframeのコンテキストを利用

ES6希望:
import alert from "@bom";
or
{alert} = System.get("@bom")
990Name_Not_Found:2013/09/21(土) 22:21:15.25 ID:???
いやいや。

delete window.alert;

これだけで元の alert が復活する。
991Name_Not_Found:2013/09/21(土) 22:31:24.78 ID:???
そのテクニックは仕様外だから実際は使えんな。
たしかモバイル機器によく入ってたNetFrontか何かで動かなくて詰まった記憶が。
992Name_Not_Found:2013/09/21(土) 23:04:32.23 ID:???
次スレですよ

+ JavaScript の質問用スレッド vol.109 +
http://toro.2ch.net/test/read.cgi/hp/1379772045/
993Name_Not_Found:2013/09/21(土) 23:13:10.40 ID:???
1000
994Name_Not_Found:2013/09/21(土) 23:24:53.58 ID:???
>>982
この件についてですが、valueとparentを持ちネスト可能なシンプルなオブジェクトを書いてみたら
インデックス方式よりずっとシンプルに出来そうです
やはり美しくないときは何か間違っているのですね
ありがとうございました
995Name_Not_Found:2013/09/21(土) 23:28:35.83 ID:???
これが入ったら無茶苦茶なことでも好きなようにできるようになるからそれまで我慢しろ
http://wiki.ecmascript.org/doku.php?id=strawman:value_proxies
996Name_Not_Found:2013/09/21(土) 23:43:19.83 ID:???
>>991
そもそも alert が標準にないのに、仕様外も何もない。

>>986
現状は大抵、Window.prototype の Own プロパティとして
alert が実装されてるから、Window.prototype.alert が
あればそれを使えばいい。

delete window.alert;

で元の alert が使える様になるのも同じ理由。
997Name_Not_Found:2013/09/21(土) 23:53:14.05 ID:???
>そもそも alert が標準にないのに、仕様外も何もない。
開き直りっすか
998Name_Not_Found:2013/09/22(日) 00:00:05.94 ID:???
は?
999Name_Not_Found:2013/09/22(日) 00:04:55.03 ID:???
1000
1000Name_Not_Found:2013/09/22(日) 00:05:31.81 ID:???
さ?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。