+ JavaScript の質問用スレッド vol.108 + >>930 この件ですが、とても恥ずかしい勘違いをしていることに気がつきました
半年ROMることにします
君はコスモを感じたか
Proxyを使えば全ての関数がメソッドチェーン意識した設計でなくても大丈夫よ もしくは new MethodChain(APIs) みたいにする方法でもいくらかいける
文字列の末尾が/だったらそれを削除する時 s = s.replace(/\/$/,''); より簡潔あるいは速い書き方ありますか?
もうあきた
>>1 も読まずに質問者としての最低限のルールも守らずID晒さなかった時点で偽物も本物も無えよ
どっちにしろクズ
>>955 if ('/' === s.charAt(s.length - 1))
s = s.slice(0, -1)
簡潔ではないがこっちの方が早いと思う
じゃあ、回答者のリテラシーを信用しますね
>>959 それなら
if(s.endsWith('/'))
の方が簡単だし良くない?
endsWidthとかstartWithなんてあったんですね よくあるケースなのでうれしい機能です でもchromeでは動かないようです MDNを見ても記事がなんか古いような 便利なメソッドなのに、歴史の彼方に消え去ってしまった・・?
ES6で実装されるのかぁ はよこいES6
ChromeやNodeでも使えるよ
すまないが次スレは俺に立てさせてくれ
昔のテキストで node.jsのサンプルに require.paths.push(__dirname)で設定するところがあるんだけど、 require.pathsが廃止になっていて動かなくなってる。 代わりにmodule.paths.pushが使えると書いてあったので試したところ、別のファイルでrequireするところで失敗。 module.pathsの設定は引き継がれないみたい。 なので、windowsの場合、環境変数NODE_PATHで設定すればなんとか動いたけど、なんかもっとスマートな方法ないのかな?
module.paths.push(process.env.HOMEPATH+'/node_modules');
node.jsはスレ違いだろ・・
JSは基礎仕様とホストAPIとエンジンが政教分離してるから強い
プログラム板にもスレあったよ
ちゃんと毎日チェックしてるぞ
それはファイルの配置方法がおかしいだけだな
ちゃんとindex.js書いてそこで読み込んでるか?
メソッドチェーンの話
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');
子から親の参照を得られるオブジェクトモデルないですか? キーの連続をパス化したものをインデックスにするモデルにしているのですが、 特定オブジェクトを検索してパスの集合を得る →オブジェクトツリーに挿入などの操作を加える →パス情報が更新される →先に検索しておいたパス情報が不正確になる という問題があります オブジェクトツリーを更新しても検索結果が簡単には古くならない そんなモデルはないものでしょうか
>>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');
すべての値がgetParentメソッドを持っている そんなオブジェクトモデルは可能なのでしょうか
不可能です
全てはオブジェクトなので上書きできるそうですが alert()でアラートを出さないでconsole.logを出すように拡張したいんですが window.alert = function(n){console.log(n);} ってやりました。 そこで、やっぱり元のアラートを出す動作に戻したいのですが、 どうやってもどすのでしょうか? 仕様として元に戻せますかね? ブラウザのリロードすればいいというのはなしです
変数にコピーして取っておけば?
規格は見てないけどconsole.logのlogはstaticじゃなくて プロトタイプ経由のメソッドであるべきなんじゃないかな? ならthisが重要だからChromeの挙動で合ってるような気がする
>>986 現実:
キャッシュするか、iframeのコンテキストを利用
ES6希望:
import alert from "@bom";
or
{alert} = System.get("@bom")
いやいや。 delete window.alert; これだけで元の alert が復活する。
そのテクニックは仕様外だから実際は使えんな。 たしかモバイル機器によく入ってたNetFrontか何かで動かなくて詰まった記憶が。
1000
>>982 この件についてですが、valueとparentを持ちネスト可能なシンプルなオブジェクトを書いてみたら
インデックス方式よりずっとシンプルに出来そうです
やはり美しくないときは何か間違っているのですね
ありがとうございました
>>991 そもそも alert が標準にないのに、仕様外も何もない。
>>986 現状は大抵、Window.prototype の Own プロパティとして
alert が実装されてるから、Window.prototype.alert が
あればそれを使えばいい。
delete window.alert;
で元の alert が使える様になるのも同じ理由。
>そもそも alert が標準にないのに、仕様外も何もない。 開き直りっすか
は?
1000
さ?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。