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

    私的良スレ書庫

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

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

    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
    952 : Name_Not - 2014/10/03(金) 11:47:07.75 ID:???.net (+3,-30,-69)
    Javascriptらしいprototype継承ってことかね
    Javascriptでオブジェクト指向やろうって方向性とは合わない気がするけど

    Prototypal Inheritance in JavaScript
    http://javascript.crockford.com/prototypal.html
    955 : Name_Not - 2014/10/03(金) 13:25:39.19 ID:???.net (+27,-30,-74)
    var a = {};
    a.name = "test";
    a.f = {};
    a.f.show = function(){console.log(this.name);};
    console.log(a.f.show());

    testが表示されません何故ですか?
    956 : Name_Not - 2014/10/03(金) 13:41:09.46 ID:???.net (+28,-30,-280)
    >>953
    それを言い始めるとその関数が(O: Object, Properties?: Object) => Objectであることも確かめないと
    JSONの例もそう >>908,909
    Objectかどうか、functionかどうか、それでは範囲が広すぎる
    中途半端なことをするくらいなら簡潔な !Object.create でいい
    Object.createに期待していない値が代入されることを想定するのは、
    undefinedに値が代入されることを想定するようなもの
    行儀の悪いコードを想定して自分のコードを複雑化させるのは悪手

    >>955
    a.f.show()として呼び出すとその関数内のthisはa.fになる
    a.f.show.call(a)と呼び出すか、関数内で直接aを参照するか、a.fにaへの参照を持たせる
    a.f = {parent: a};
    a.f.show = function(){console.log(this.parent.name);};
    957 : Name_Not - 2014/10/03(金) 13:56:03.56 ID:???.net (+63,+30,-138)
    般 僧 掲 若 咒 咒 菩 波 夢 罫 依 智 老 識 色 無 垢 舎 空 利 時 観  摩
    若 掲 諦 波 能 是 提 羅 想 礙 般 亦 死 界 声 受 不 利 空 子 照 自  訶
    心 諦   羅 除 大 故 蜜 究 故 若 無 亦 無 香 想 浄 子 即 色 見 在  般
    経   掲 蜜 一 明 知 多 竟 無 波 得 無 無 味 行 不 是 是 不 五 菩  若
       菩 諦 多 切 咒 般 故 涅 有 羅 以 老 明 觸 識 増 諸 色 異 蘊 薩  波
       提   咒 苦 是 若 得 槃 恐 蜜 無 死 亦 法 無 不 法 受 空 皆 行  羅
       薩 波 即 真 無 波 阿 三 怖 多 所 尽 無 無 眼 減 空 想 空 空 深  蜜
       婆 羅 説 実 上 羅 耨 世 遠 故 得 無 無 眼 耳 是 相 行 不 度 般  多
       訶 掲 咒 不 咒 蜜 多 諸 離 心 故 苦 明 界 鼻 故 不 識 異 一 若  心
         諦 曰 虚 是 多 羅 佛 一 無 菩 集 尽 乃 舌 空 生 亦 色 切 波  経
             故 無 是 三 依 切 罫 提 滅 乃 至 身 中 不 復 色 苦 羅
         波   説 等 大 藐 般 顛 礙 薩 道 至 無 意 無 滅 如 即 厄 蜜
         羅   般 等 神 三 若 倒 無 侘 無 無 意 無 色 不 是 是 舎 多
    959 : 946 - 2014/10/03(金) 14:24:01.37 ID:???.net (+60,+29,-34)
    >>950
    めっちゃわかりやすくありがとうございます
    ようするにそんなに拘る必要もないよってことですね
    960 : Name_Not - 2014/10/03(金) 14:43:12.10 ID:???.net (+70,+29,-21)
    >>948
    それはただの二流の連中だろ
    仕様には哲学は書いてねーんだよ
    961 : Name_Not - 2014/10/03(金) 14:51:06.45 ID:???.net (+63,+28,-34)
    >>950
    さすがクロックフォードもS級技術者の端くれだな
    962 : Name_Not - 2014/10/03(金) 14:56:46.41 ID:???.net (+57,+29,-5)
    朝方までアホな質問してたニートが目を覚ましたか
    963 : Name_Not - 2014/10/03(金) 15:06:09.57 ID:???.net (+75,+29,-46)
    >>944の件ですが、
    jsbinでテストしてみたところ、すぐに反映しました
    ということは、
    スクリプトが設定した値とは違う値が入る可能性もある、
    ということになると思います。
    おそらくほとんどのスクリプトは
    別ウインドウでのクッキー変更の可能性を考慮していないと思いますが、
    考慮してる人いますか?
    965 : Name_Not - 2014/10/03(金) 15:16:41.78 ID:???.net (+79,+29,-46)
    >>950
    undefinedチェックがナンセンスなら
    そもそもこんな議論も発生しないだろw
    別に2chだけで起きてるわけじゃないぞ
    実際にあり得るし現にあることをナンセンスと言う方がナンセンス
    966 : 949 - 2014/10/03(金) 15:19:10.97 ID:sQVzkt5f.net (-24,+30,-239)
    >>953
    明らかに callbable なのだから function 判定するのがより安全なのは確かだと思う。
    様々な状況を想定して例外を考えるのはより良いプログラムを書くことに繋がる。

    > 行儀の悪いコードを想定して自分のコードを複雑化させるのは悪手
    思想の違いとしか思えないけど。
    行儀の悪い状況も想定して回避できるリスクは回避するのが私のスタンス。
    あなたは(あなたにとって)ありえない状況は考慮せず、安全よりもシンプルを追求してる。
    (最も、「ありえない状況」は主観的なものだから人によって異なるだろう。私にとってはこれはありえない状況ではない。)
    安全とシンプルはトレードオフの関係にある。

    思想の違いで議論を始めても水掛け論になるのは目に見えてる。
    唯一解のない議論を始めても仕方ないかと。
    967 : Name_Not - 2014/10/03(金) 15:19:54.97 ID:???.net (+11,-30,-34)
    何度も呼び出す場合はAとBどっちがいいですか?

    A
    var obj = {function test(){}};
    obj.test();
    B
    var obj = function(){}
    obj.prototype.test = function(){};
    obj.test();
    968 : Name_Not - 2014/10/03(金) 15:25:30.41 ID:???.net (-1,-30,-34)
    >>967
    A は SyntaxError: Unexpected identifier
    969 : Name_Not - 2014/10/03(金) 15:26:37.33 ID:???.net (+30,-29,-18)
    >>967
    B は TypeError: undefined is not a function だった
    ちゃんとテストしてから質問するように
    970 : Name_Not - 2014/10/03(金) 15:35:04.26 ID:???.net (+63,+30,-102)
    思想の違いとか宗教論争とか言って己の二流性を直視できない奴がいるな
    技術の進化は技術者が思想に関する論争を戦わせた結果なんだよ
    個人の好みに帰されることを一流の技術者が熱論するわけねーだろ
    二流の欠点は一流を理解できず、
    自分を誤魔化す理由の捏造に逃げてしまうところ
    971 : 965 - 2014/10/03(金) 15:36:24.76 ID:sQVzkt5f.net (-28,+24,+0)
    >>966>>956 宛だった。
    972 : Name_Not - 2014/10/03(金) 15:37:26.15 ID:???.net (+35,-30,-34)
    A
    var test = {};
    test.a = function(){};
    test.a();
    B
    function test(){}
    test.prototype.a = function(){}
    var t = new test();
    t.a();
    973 : Name_Not - 2014/10/03(金) 15:40:47.73 ID:???.net (+91,+30,-72)
    少数が書き込みを繰り返しているんだろうけど、「一流技術者」とか「A級」とか「議論しているから問題があるはずだ」とか主観的な物言いが目立つね
    974 : Name_Not - 2014/10/03(金) 15:41:52.68 ID:???.net (+64,+29,-59)
    思想の違いを認識してない代表が>>766みたいな奴だな
    OOPの作法に従って書いてある本を手にとってトンチンカンな事で文句付ける
    975 : Name_Not - 2014/10/03(金) 15:43:14.65 ID:???.net (+64,+30,+0)
    976 : 955 - 2014/10/03(金) 15:45:38.43 ID:???.net (-2,-30,-51)
    >>966
    [1] Object.create = "create";
    [2] Object.create = function() {return {};};
    あなたにとって[1]はあり得て[2]はあり得ないわけだ
    俺には分からんね
    どっちも相手にしない それだけだ
    977 : Name_Not - 2014/10/03(金) 15:53:23.62 ID:???.net (+20,-26,-50)
    >>975
    AはBよりパフォーマンスが高いが、複数のインスタンスを生成できない
    BはAよりパフォーマンスが低いが、複数のインスタンスを生成できる
    用途に合った機能を使え
    978 : 949 - 2014/10/03(金) 16:08:37.07 ID:sQVzkt5f.net (+26,+30,-60)
    >>976
    [1], [2] 共にありうるが、[2] は回避手段を私が知らないので諦めている。
    何か有効な対策があるなら教えて欲しい。

    リスクはゼロには出来ないが、出来るだけ軽減させるものだ。
    [1] のリスクだけでも回避できるなら回避した方が良いと私は考える。
    「リスクをゼロに出来ないからノーガード戦法をとる」も一つの意見なのだろうけど、ちょっと私には賛同しがたいかな。
    979 : Name_Not - 2014/10/03(金) 16:15:17.83 ID:???.net (+106,+29,-16)
    >>973
    主観的じゃないものいいってなんだよ
    仮にそんなものがあるとして、そんなものには価値はない
    すでにあるものについて語ってるだけだからgoogleさえあればお前はいらない
    980 : Name_Not - 2014/10/03(金) 16:24:29.49 ID:???.net (+66,+29,-121)
    >>956
    >行儀の悪いコードを想定して自分のコードを複雑化させるのは悪手

    これは重要なことだな
    時が経てば自動的になくなっていく瑕疵のために今あるコードを醜くするのは悪手
    その醜さがいずれ腐敗しだすのだから
    981 : Name_Not - 2014/10/03(金) 16:24:39.13 ID:???.net (+21,-30,-10)
    var A = {};
    A.a = function(){
    A.b();
    };
    これb()がないのにjshintでエラー出ません
    どうしてですか?
    982 : Name_Not - 2014/10/03(金) 16:25:03.89 ID:???.net (+87,+29,-130)
    >>979
    主観と客観の違いってわかる?
    技術者なら客観的事実に基づいた論理で議論すべきだよ
    事実の根拠となる情報源は確度が高いこと(例えば、ES, DOM仕様書など)が前提としてあるけどね
    後は比較コードを示して、どちらがより良いか論理的に説明して見せるとか
    983 : Name_Not - 2014/10/03(金) 16:26:14.57 ID:???.net (+39,+13,-2)
    >>981
    呼び出されてないから
    984 : 982 - 2014/10/03(金) 16:30:06.38 ID:???.net (+3,-30,-46)
    間違えた、jshintか
    jshintは知らんが、呼び出せばコンソールで「TypeError: undefined is not a function」になる
    jshintの前にコンソールを見るべきだ
    jshintの設計思想なんて作者以外知りようがない
    985 : Name_Not - 2014/10/03(金) 16:35:01.55 ID:???.net (+63,+30,-113)
    このスレを見ていても分かるよな
    A級以上の技術者の視点は未来にあり、「あるべき姿」について語る
    B級以下の技術者の視点は過去と現在にあり、「今ある姿」についてしか語ることができない
    そして今は存在しないものについての言葉を、
    「主観的」「宗教論争」「思想の違い」などの言葉押し込めて自分を安心させる
    「仕様」という言葉を好むのもB級の特徴
    986 : Name_Not - 2014/10/03(金) 16:37:14.23 ID:???.net (+43,+15,+0)
    ようC級
    987 : 955 - 2014/10/03(金) 16:40:24.54 ID:???.net (-17,-30,-55)
    >>978
    >=IE8のためにNodeのPolyfillを作るとしたらどう書く?
    <=IE9ではobjectだが、他のブラウザはfunctionで定義されてる
    if(!("Node"in window)&&typeof Node!=="object"&&typeof Node!=="function")
    長ったらしい
    988 : 987 - 2014/10/03(金) 16:43:01.87 ID:???.net (+3,-30,-25)
    間違えた
    if(!(("Node"in window)&&typeof Node==="object")||typeof Node==="function"))
     Node =

    これで十分だろう
    if(!window.Node)
     Node =
    989 : Name_Not - 2014/10/03(金) 16:43:32.39 ID:???.net (+63,+30,-86)
    まぁほとんどの雇われ技術者にとって重要なことは
    「誰かが考えたことをどうやってやるか」でしかないから
    B級で十分なんだろうけどね。
    しかし彼らの硬直化した思考からは
    彼らが自分で考えるという行為をどれだけ奪われてきたのかに思いを致さざるをえず、
    そのことに危機感を覚えるのである
    990 : Name_Not - 2014/10/03(金) 16:48:34.07 ID:???.net (+0,-29,-28)
    >>987
    > >=IE8のためにNodeのPolyfillを作るとしたらどう書く?
    引用文を捏造するとは…
    この人は誰と戦ってるんだろうか?
    991 : 986 - 2014/10/03(金) 16:51:22.57 ID:???.net (+31,-29,-33)
    すまんな 大なり小なりも間違えてるな
    一行目はie8以前、二行目はie9以降ってことだ
    しかも("Node"in window)じゃなくて(window.Node)だな
    寝るわ
    992 : Name_Not - 2014/10/03(金) 16:54:31.20 ID:???.net (+62,+29,-30)
    >>991
    いやそういうことではなくて…
    >>978は「IE8のためにNodeのPolyfillを作るとしたらどう書く?」を質問してないでしょ
    あなたが勝手に捏造しただけ
    994 : Name_Not - 2014/10/03(金) 17:20:23.91 ID:???.net (+58,+30,-234)
    Object.createの思想とは何か?
    考えるに、オブジェクト自身に産出の機能を持たせる、ということに他ならない
    JavaScriptはもともと可能態(デュナミス)としてそのような形態を最初から孕んでいた
    それを実現してやろうというのがS級技術者ダグラス・クロックフォードの発想である
    別に本人に聞いたわけじゃないがそのように推察する
    しかしこうすると、インスタンスという概念が消えてしまう
    インスタンス自身も親になれるのだから。
    とはいえ、普通はインスタンスを親にすることはないだろう。
    産出するオブジェクトと、産出しないオブジェクトを、頭文字のcaseで判断することになるだろう
    それは果たして美しいのか?という問題はある
    995 : Name_Not - 2014/10/03(金) 17:26:16.70 ID:???.net (+3,-30,-161)
    スクリプトを呼び出す前に上書きされてるかも知れないから
    console = 1
    typeof console === undefined
    typeof console === "undefined"
    typeof console === void 0
    どれもダメ
    ちゃんとwindow.console === undefined && window.console.log === "function"
    と確認するべき
    996 : Name_Not - 2014/10/03(金) 17:33:02.85 ID:???.net (+3,-29,-60)
    ショートコーダーが大好きな jQuery も isFunction, isArraylike, isArray ...etc
    判定の為の関数を多数定義してるんだよね
    必要ならコードが長かろうが判定させる
    それが基本
    998 : Name_Not - 2014/10/03(金) 17:33:49.99 ID:???.net (+0,-17,+0)
    1000
    999 : Name_Not - 2014/10/03(金) 17:38:35.00 ID:???.net (+45,+22,-3)
    誰か次スレたてられる?
    1000 : Name_Not - 2014/10/03(金) 17:44:49.75 ID:???.net (+0,-17,+0)
    1000
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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