のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,646,187人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitter
951 : Name_Not - 2013/09/21(土) 12:52:30.95 ID:??? (+57,+29,-18)
まあ、メソッドチェーンを特殊なシンタックスと勘違いしちゃってる素人はよくいる
952 : Name_Not - 2013/09/21(土) 13:00:55.95 ID:??? (+113,+29,-7)
>>930
この件ですが、とても恥ずかしい勘違いをしていることに気がつきました
半年ROMることにします
953 : Name_Not - 2013/09/21(土) 13:05:07.98 ID:??? (+52,+29,-2)
君はコスモを感じたか
954 : Name_Not - 2013/09/21(土) 13:20:16.40 ID:??? (-1,-29,-45)
Proxyを使えば全ての関数がメソッドチェーン意識した設計でなくても大丈夫よ
もしくは
new MethodChain(APIs)
みたいにする方法でもいくらかいける
955 : Name_Not - 2013/09/21(土) 14:30:21.28 ID:??? (+2,-30,-18)
文字列の末尾が/だったらそれを削除する時
s = s.replace(/\/$/,'');
より簡潔あるいは速い書き方ありますか?
956 : Name_Not - 2013/09/21(土) 14:31:29.45 ID:??? (+104,+29,+0)
>>952
これはもちろん偽者です
957 : Name_Not - 2013/09/21(土) 14:52:36.44 ID:??? (+46,+28,+0)
もうあきた
958 : Name_Not - 2013/09/21(土) 14:54:03.48 ID:??? (+57,+29,-42)
>>1も読まずに質問者としての最低限のルールも守らずID晒さなかった時点で偽物も本物も無えよ
どっちにしろクズ
959 : Name_Not - 2013/09/21(土) 15:00:03.58 ID:??? (+36,-30,-31)
>>955
if ('/' === s.charAt(s.length - 1))
 s = s.slice(0, -1)

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

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

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

なので、windowsの場合、環境変数NODE_PATHで設定すればなんとか動いたけど、なんかもっとスマートな方法ないのかな?
969 : Name_Not - 2013/09/21(土) 16:15:48.52 ID:??? (+4,-30,-36)
module.paths.push(process.env.HOMEPATH+'/node_modules');
970 : Name_Not - 2013/09/21(土) 16:16:25.78 ID:??? (-6,-29,-2)
node.jsはスレ違いだろ・・
971 : Name_Not - 2013/09/21(土) 16:22:16.89 ID:??? (+48,+20,-34)
JSは基礎仕様とホストAPIとエンジンが政教分離してるから強い
973 : Name_Not - 2013/09/21(土) 17:00:28.33 ID:??? (+2,-20,-2)
プログラム板にもスレあったよ
975 : Name_Not - 2013/09/21(土) 17:12:33.35 ID:??? (+52,+29,-13)
ちゃんと毎日チェックしてるぞ
976 : Name_Not - 2013/09/21(土) 17:16:36.37 ID:??? (+3,-30,-108)
>>969
それではうまくいきませんでした。

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

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

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

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');
980 : Name_Not - 2013/09/21(土) 20:51:29.79 ID:??? (-1,-29,-32)
>>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/
981 : Name_Not - 2013/09/21(土) 21:12:35.16 ID:??? (+64,+28,-2)
>>979
だめね。やり直し。
982 : Name_Not - 2013/09/21(土) 21:20:24.03 ID:??? (+99,+29,-162)
子から親の参照を得られるオブジェクトモデルないですか?
キーの連続をパス化したものをインデックスにするモデルにしているのですが、
特定オブジェクトを検索してパスの集合を得る
→オブジェクトツリーに挿入などの操作を加える
→パス情報が更新される
→先に検索しておいたパス情報が不正確になる
という問題があります
オブジェクトツリーを更新しても検索結果が簡単には古くならない
そんなモデルはないものでしょうか
983 : Name_Not - 2013/09/21(土) 21:24:31.09 ID:??? (+15,-30,-109)
>>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');
984 : Name_Not - 2013/09/21(土) 21:26:29.85 ID:??? (-1,-29,-44)
すべての値がgetParentメソッドを持っている
そんなオブジェクトモデルは可能なのでしょうか
985 : Name_Not - 2013/09/21(土) 21:39:21.01 ID:??? (+35,+17,+0)
不可能です
986 : Name_Not - 2013/09/21(土) 22:05:10.04 ID:??? (+18,-30,-131)
全てはオブジェクトなので上書きできるそうですが
alert()でアラートを出さないでconsole.logを出すように拡張したいんですが
window.alert = function(n){console.log(n);}
ってやりました。
そこで、やっぱり元のアラートを出す動作に戻したいのですが、
どうやってもどすのでしょうか?
仕様として元に戻せますかね?
ブラウザのリロードすればいいというのはなしです
987 : Name_Not - 2013/09/21(土) 22:09:14.85 ID:??? (+32,+9,-4)
変数にコピーして取っておけば?
988 : Name_Not - 2013/09/21(土) 22:10:19.95 ID:??? (-1,-29,-96)
規格は見てないけどconsole.logのlogはstaticじゃなくて
プロトタイプ経由のメソッドであるべきなんじゃないかな?
ならthisが重要だからChromeの挙動で合ってるような気がする
989 : Name_Not - 2013/09/21(土) 22:17:11.15 ID:??? (+4,-30,-83)
>>986
現実:
キャッシュするか、iframeのコンテキストを利用

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

delete window.alert;

これだけで元の alert が復活する。
991 : Name_Not - 2013/09/21(土) 22:31:24.78 ID:??? (+63,+29,-24)
そのテクニックは仕様外だから実際は使えんな。
たしかモバイル機器によく入ってたNetFrontか何かで動かなくて詰まった記憶が。
993 : Name_Not - 2013/09/21(土) 23:13:10.40 ID:??? (+0,-17,+0)
1000
994 : Name_Not - 2013/09/21(土) 23:24:53.58 ID:??? (+76,+29,-40)
>>982
この件についてですが、valueとparentを持ちネスト可能なシンプルなオブジェクトを書いてみたら
インデックス方式よりずっとシンプルに出来そうです
やはり美しくないときは何か間違っているのですね
ありがとうございました
995 : Name_Not - 2013/09/21(土) 23:28:35.83 ID:??? (-1,-29,-5)
これが入ったら無茶苦茶なことでも好きなようにできるようになるからそれまで我慢しろ
http://wiki.ecmascript.org/doku.php?id=strawman:value_proxies
996 : Name_Not - 2013/09/21(土) 23:43:19.83 ID:??? (+9,-30,-163)
>>991
そもそも alert が標準にないのに、仕様外も何もない。

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

delete window.alert;

で元の alert が使える様になるのも同じ理由。
997 : Name_Not - 2013/09/21(土) 23:53:14.05 ID:??? (+56,+28,-20)
>そもそも alert が標準にないのに、仕様外も何もない。
開き直りっすか
998 : Name_Not - 2013/09/22(日) 00:00:05.94 ID:??? (+18,+0,-4)
は?
999 : Name_Not - 2013/09/22(日) 00:04:55.03 ID:??? (+0,-17,+0)
1000
1000 : Name_Not - 2013/09/22(日) 00:05:31.81 ID:??? (+32,+14,-3)
さ?
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について