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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    201 = :

    > そもそも一度限りのかき捨てのコードなんだから読む必要がない

    一度限りのかき捨てのコードなんて誰が決めたの?
    あなたの思い込みですよね?

    202 = :

    > 問題があれば捨てればいいだけでその時に例えば>>175のような感じだと
    > 4個も公開変数があるから結局一部を捨てたりということもしづらい

    公開変数ってなんや?
    this.foo なんてのが公開変数やろ?
    どうみても>>175はローカル変数や

    一部を捨てたりってなんや?
    全くもって意味不明だ

    203 = :

    初心者です。
    この本(http://amzn.asia/386grG8)を文中の課題をやりながら読み終わったので、
    次はこちらの本(http://amzn.asia/cDn7CWG)に行こうと思っております。
    この話を知人にしたところ、旧版(http://amzn.asia/cv1is9n)を持っているから貸してやろうか?と言われました。

    同じ本ですが2010年の旧版です。
    javaScriptの学習において そこまで問題がなければ旧版を借りようかと思うのですが、
    この界隈の技術の移り変わりは早いので本書も最新版を買うべきでしょうか?

    204 = :

    初めてのJavaScript 第3版、オライリー、2017

    この本は、ES6(2015)の本だけど、
    プログラミングを数年以上やっていないと、難しくて読めない

    初心者は、(ECMA Script)ES3, ES5, ES6 と順番に、やった方が良いかも

    今のブラウザは、ES5だけど、
    ES6ではクラス構文などもできて、極端に難しくなる

    205 = :

    >>203
    間違いなく新しい方が良いけど
    古いから役に立たないって訳でもない

    206 = :

    クラス構文習うよりprototype習うほうが難しくね?

    207 = :

    >>175, >>187
    ありがとうございました!

    208 = :

    >>203
    あってもいいけど物理的な本は必要か?と思う

    209 = :

    あるていど経験してるとサイト検索で十分だと思うけど
    最初のうちは体系立てて勉強できるように、本がいいと思う

    210 = :

    >>206
    プロトタイプは超簡単
    「prototype」は難しいが、それはプロトタイプベースとは関係なく
    関数をクラスに見立てたJSの旧クラスシステムで必要になるもので本質とは関係がない
    でもプロトタイプベースで書けるようになったのはES2015からで
    その教え方をしている入門書なりは見たことがない

    211 = :

    phpマニュアルみたいなサイトないもんかね
    あれを一度ガッツリ読むとすんげーレベルアップするんだけどな

    212 = :

    >>210
    > でもプロトタイプベースで書けるようになったのはES2015からで

    JavaScriptは最初からプロトタイプベースだよ

    「俺は昔のJavaScriptはプロトタイプベースとは認めん!」というのは無しな
    それはお前の「オレオレ定義」であって世間一般には通用しないものだから
    世間一般にはJavaScriptは最初からプロトタイプベース

    213 = :

    >>212
    んだね

    215 = :

    >>212
    いやいや、JSのベースがプロトタイプかどうかを言ってるんじゃなくて、
    プロトタイプベースらしいプログラミングができる言語だったかを言ってるんだよ
    ES2015まではプロトタイプの設定が自由にできなかったんだが
    それでプロトタイプベースプログラミングが出来るわけ無いでしょ

    だから長らく継承テクニックとしてJSの内部プロトタイプの操作を利用するハックが使われてきたのよ
    それでもES2015でいうextendsの効果にもある
    関数のプロトタイプを別の関数にするとかいう重要な操作はできなかったわけよ
    でも当時でも独自実装であった__proto__を使えばそれは容易にクリアできたわけで
    それこそがプロトタイプベースのポテンシャルなわけよ

    216 = :

    class構文追加でより難しくなるかどうかの話だったと思うが

    217 = :

    >>216
    とりあえず自分が言いたいことは、prototypeプロパティやnew演算子を使った継承周りのテクニックは
    確かに簡単とは言いにくく、class構文はその点分かりやすいけれど、
    勘違いしてほしくないのは『プロトタイプ』を活用した継承システムは本来簡単なはずなんだってこと
    でもJSでは長らく活用が許されてなかったので、プロトタイプベースOOPの文化や学習が整っていないということ

    218 = :

    >>217
    因みにプロトタイプベースらしい書き方ってどんな感じ?
    TypeScriptメインだからよくわからんのだ

    219 = :

    >>218
    最初から用意されている1つのクラスシステムに縛られないのがプロトタイプベースの良さと言っても
    大きなコードを書けば自ずと抽象化の結果として何らかのクラスシステムを作ることになる
    既存のJSの2つのクラスシステムは当然内部的にプロトタイプベースのプロトタイプ設定を利用しているのを見ても分かるが
    プロトタイプの自由な設定機能がないとまともなクラスシステムを作るのは困難
    一番わかり易い形で具体的に絶対にできないことを挙げるなら上で書いたように関数のプロトタイプ設定
    つまり関数へのメソッドの継承が実現できない

    因みにプロトタイプベースらしい書き方って言うのも一概には言えないのかもしれないし、
    実際はコンストラクタ的な機能を考えたりしてクラスシステムを構築する場合もある
    そもそも自分がこれを挙げた理由は継承の概念を理解するのが簡単ということで
    本当に単純なプロトタイプの設定だけでOOPが円滑にできるとは言わない
    その上で書くと

    220 = :

    class B { m() { return 6 } }
    class A extends B { m(){ return 7 * super.m() } }
    let o = new A
    o.m()
    というのと
    let B = { m() { return 6 } }
    let A = { __proto__: B, m(){ return 7 * super.m() } }
    let o = { __proto__: A }
    o.m()
    というの、初めて継承やらを理解する時にはオブジェクトだけで説明できる後者の方が仕組み理解し易くないか?
    少なくとも、class構文でない旧クラスシステムで書いたコードと比べたら明らかにそうだよねってこと

    221 = :

    >>215
    いや、だからそれはあんたの「オレオレ定義」であって
    世間一般ではJavaScriptはプロトタイプベースのオブジェクト指向だって
    最初から言われてる

    言われているかどうか。事実の話をしている。
    あんたが認めるかどうかじゃない

    222 = :

    >>220
    俺は前者だな
    知ってるからかもしれんが

    class構文がなかったころと比べたら
    まあどっちも理解しやすい

    223 = :

    >>219
    > つまり関数へのメソッドの継承が実現できない

    それはクラスベースでは当たり前にある機能で
    プロトタイプベースはクラスベースと同じ機能が
    なければないと思ってるからだよね?

    つまりあんたはクラスベースとプロトタイプベースを
    違うものだって考えられてないってこと

    プロトタイプベースをクラスベースの書き方を変えただけと思ってるから
    クラスベースと同じ機能がない=プロトタイプベースではない
    という意味がわからないことになってるんだよ。

    224 = :

    ようするに「プロトタイプベースのオブジェクト指向」を
    やるのであれば昔のJavaScriptでもそれは普通にできる

    プロトタイプベースのオブジェクト指向で
    クラスベースの真似事をしようとするから
    機能が足りないって思ってしまう

    プロトタイプベースでやるならば、
    別に最初から機能は不足してない

    225 = :

    これも一応書いておくか
    言いたいことはいろんな形のオブジェクト指向があるということ

    http://codezine.jp/article/detail/3708
    >  継承は決してオブジェクト指向の必須技術ではありませんが
    > (実際、継承を持たないオブジェクト指向言語も存在しています)、

    226 = :

    >>224
    完全にJS流クラスシステムに毒されてんな
    自分はプロトタイプベースのメリットは最初から用意されているクラスシステムに縛られないことって言ったでしょ?
    でも旧JSは半分、いや3/4くらい縛られてたわけよ
    旧JSでプロトタイプベースっぽい、つまりクラスに縛られない固い言語でない特徴が現れていたのは
    オブジェクトとプロパティのゆるさだけで、ここで問題にしている継承周りに関しては
    他のクラスベース言語同様に縛られていたし、むしろクラスシステムがクソな分状況が酷かった
    だからみんな旧クラスシステムの内部のプロトタイプ操作を利用する
    『機能が十分なクラスシステム』をいろいろ考えてたわけじゃん
    それでも関数のプロトタイプ設定はできないってことが長年の悩みだったわけだけどね

    それと話を整理するけど
    プロトタイプベースでも機能は足りるっていうのは話が食い違っている
    よく考えてみて
    それって、new演算子やprototypeプロパティを使えば、
    プロトタイプの設定ということができなくても継承は十分に実現できるって言いたいんでしょ?

    でもこちらはそもそもそのnew演算子やprototypeプロパティを使ったJS流旧クラスシステムの複雑さと
    本来のプロトタイプベースでの継承実現の簡潔さを比較してるんだよ
    話がおかしいよね?

    あとそちらこそプロトタイプベースとクラスシステムの関係を分かっていないようだけど
    プロトタイプベースでも、デフォルトのクラスシステムがあることとは矛盾しない
    それに縛られないってことが重要だからね

    227 = :

    > それって、new演算子やprototypeプロパティを使えば、
    > プロトタイプの設定ということができなくても継承は十分に実現できるって言いたいんでしょ?

    いわんよ?
    継承はオブジェクト指向に必須ではない。


    new演算子やprototypeプロパティを使えば、
    プロトタイプベースのオブジェクト指向が実現できる
    それだけ

    232 = :

    >>228
    まだ話が食い違ってるな。

    俺が最終的に言いたいことは、JavaScriptは昔からプロトタイプベースの
    オブジェクト指向だってことだけだよ


    で君がいいたいことはだいたい分かる。
    それに対して反論するならば、

    [君がいいたいこと] 昔のJavaScriptは継承がやりにくい

    それは事実だろう。だがやりにくいからといってもできる以上
    プロトタイプベースであることを否定することにはならない。
    つまり継承がやりづらいプロトタイプベースのオブジェクト指向

    [君がいいたいこと] 一般的な「継承」ができない(面倒)

    大変でもできる。できるのだからオブジェクト指向と言える。
    それにそもそも継承はオブジェクト指向の必須要件ですらない
    だからプロトタイプベースのオブジェクト指向


    わかる? 継承があってもなくても、面倒であってもそうでなくても
    JavaScriptは昔からプロトタイプベースのオブジェクト指向なんだよ

    234 = :

    あ、ごめん>>231を見てなかった

    235 = :

    あ、やっぱり動く最低限のサンプルコード書いてもらわないとダメだな
    divがネストしてるのかどうかわからんから答えられん

    236 = :

    任意の配列とか言ってるのに、1以上から始まってるのが謎だし
    じゃあ複数とはいくつまでなのかとか書いてないし情報が足りんだよ

    まあ、情けでエスパーして(いつも通りjQueryで)書いてやったが
    次はもれなく情報を書くか、jsfiddleにサンプル書くか、その両方をやってからレスしてくれ

    http://jsfiddle.net/ft3aegkx/

    237 = :

    >>231
    >上書き
    上書きの意味がよくわからんが、
    2回目の追加は、実際は1回目に追加した elmDiv の移動になった
    ということか?

    追加するたびに createElement(cloneNodeでもOK)で
    新たに要素を作成しないとそうなる

    238 = :

    要素を2つ、追加したいのなら、

    まず要素を2つ、作った(new した)かどうかを確かめる

    239 = :

    var aaa=undefined;
    とのか変数にundefinedを入れるって文法的に正しいのでしょうか?
    undefinedって変数未定義のときにwebコンソールとかで出ると
    考えているため、変数に代入することはないと思ってんですけど
    どうなのでしょうか?

    240 = :

    文法的には問題ない NaNとかと同じ
    ただ変数に直接入れるような使い方が相応しい場面はかなり少ないと思う

    243 = :

    /^(^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$)?$/
    出来なくもないけど非常に分かり辛い
    文字列長0で分岐させたほうが良さそうな気がする

    244 = :

    >>242
    正規表現をそのまま使うやつは馬鹿
    名前をつけて使え

    名前というのは関数名のことだ。

    function is_email(email) {
     正規表現チェック
    }

    空を許可するんだろう?

    function is_email(email) {
     emailが空なら return true
     正規表現チェック
    }

    こうすればよかろう

    245 = :

    >>243,>>244
    ありがとこのやろう

    246 = :

    質問です

    環境はvagrantでubuntu16.04を使用してます

    vue-cliを使ってるんですけどnpm run buildしてlocalhost:8080にアクセスできません。
    ポートフォワーディングは8080→8080で設定しています。

    http_proxyも設定しています。

    ローカルホストからアクセスする方法を教えてください

    247 = :

    >>246ですが、自己解決しました


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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