[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/07 09:57 / Filesize : 397 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:51:33.37 ID:WwOYSBmy.net]
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

445 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 13:26:46.16 ID:qPi1xPU6.net]
ねえよそんな店

446 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 15:45:22.85 ID:3F7VjM1T.net]
>>434
TypeSprict

447 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 15:58:08.55 ID:ZPhk/eMO.net]
TypeScriptは JavaScript+α という言語だからw

448 名前:デフォルトの名無しさん [2016/06/04(土) 17:42:38.85 ID:vhhVz63c.net]
https://www.youtube.com/watch?v=KApAJhkkqkA

↑こーいうふうに
タグとか補完して欲しいんですけど、
何のエディタ使えばいいんですか?
Windowsでお願いします。

449 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 18:03:53.99 ID:BiFmHB/P.net]
>>438
https://www.sublimetext.com/
その動画のやつならWindowsでも使えるよ。

450 名前:デフォルトの名無しさん [2016/06/04(土) 18:13:24.70 ID:vhhVz63c.net]
ありがとうございます!

451 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 18:36:53.03 ID:TumyIwY9.net]
>>434
「あまり」とは具体的に何ですか?
JavaScriptを使いながらJavaScriptを意識しないのは相当矛盾していると思いますが、何が目的ですか?

452 名前:デフォルトの名無しさん [2016/06/04(土) 19:03:08.12 ID:vhhVz63c.net]
>>439
動画のしょっぱなのhtmlとか入力すると
必要なタグをボンっと出すやつどうやるんですか??

453 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:46:47.25 ID:925XNPqI.net]
>>430
SQLが集合論だとも理解してない人には難しかったかな。
小さなオツムで、undefinedは不要、nullが含まれている行と、行がないのは等価値だと一生騒いで、
そのままエンジニアにならずにホームレスにでもなってくれw



454 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:53:11.80 ID:Eqdj22Ns.net]
理解してない論をやる人はいい加減にしてくれ
理解させようと説明して歩み寄るならともかく、お互いに避難しあってるだけでは前進しないぞ
その気がないなら沈黙で返すのが周囲に迷惑をかけない唯一の方法

455 名前:デフォルトの名無しさん [2016/06/04(土) 20:54:05.74 ID:71w07kjf.net]
>>441
作成時にコーティングを必要とせず、ジャバスクリプトの動的効果は享受したいということです

456 名前:デフォルトの名無しさん [2016/06/04(土) 21:05:17.49 ID:AIJuo/HE.net]
Haskell使えば大抵の問題は片付きます。

457 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:05:18.12 ID:Eqdj22Ns.net]
>>445
コーディングしないならそれはプログラミングではないですね。
既存のライブラリや使いまわせるコピペコードを検索して探してみてはいかがですか。
いずれにしても、このスレで聞くには趣旨がずれていると思いますが。

458 名前:デフォルトの名無しさん [2016/06/04(土) 21:16:28.25 ID:AIJuo/HE.net]
質問に答えていくだけでソフトウェアが完成するとしても、それはプログラミングです。

459 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:27:23.54 ID:Eqdj22Ns.net]
言い方が悪かったでしょうかね。
JavaScriptを勉強せずにJavaScriptを書きたいとする要望が子のスレの趣旨に反していると言いたかったのですが。

460 名前:デフォルトの名無しさん [2016/06/04(土) 21:29:46.92 ID:AIJuo/HE.net]
このスレ自体、板違いなのですが。

461 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 22:02:26.83 ID:Y4cfNkA+.net]
薀蓄垂れてるやつのわんだほーなコード見たいんだが

462 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 22:27:00.97 ID:o5H+FwEM.net]
>>450
そう思うなら、質問しなければいいんじゃないですかね?

463 名前:デフォルトの名無しさん [2016/06/04(土) 23:09:22.49 ID:AIJuo/HE.net]
質問したことはありませんが。



464 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 23:34:41.13 ID:M/5wRGJi.net]
暇つぶしに板違いのスレで遊んでいるのか

465 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 00:03:18.80 ID:mO7gP4jx.net]
>>443
この状況でそんな基本事項を嬉々として出すって、
おっさん本当に学生以下とちゃうか?
少しはまともなレスしろや

そもそも集合(テーブル)間の射の話なんやから、
そのレスじゃ何にも反論できとらんどころか、
結局おっさんの仕様じゃ繋がっとらん状況じゃ自分で自分の首絞めとるやろ

そして自分から多次元DB持ち出してきた癖に何棚上げしとるんや
知ったかと煽りしかできない珍獣は、某関数型ヴォルデモートでお腹いっぱいやで

466 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 00:18:27.24 ID:hY1lA33B.net]
さっさとお手本コード晒せよ
こんだけ偉そうなこと言ってんだからどこに出しても恥ずかしくないレベルのもんかけるんだろ?
あくしろよ

467 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 01:09:47.31 ID:Ewjxu1z+.net]
>>448
「JavaScriptのプログラムを作りたいけどJavaScriptを勉強する気がないので、ウィザード形式で質問に答えるだけでJavaScriptコードを生成するジェネレータを下さい」
って事かな
さすがにクレクレ君すぎる

468 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 01:27:22.46 ID:bEHxSIM9.net]
>>434
Haxe (ヘックス)

ECMAScript 4に似ている。
Adobe Flashおよび独自のNekoVMで、実行可能なバイトコードにコンパイルされるほか、
JavaScript、ActionScript、C++、C#、Java、PHP、Pythonへのソースコードの変換が可能である

469 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 01:33:27.00 ID:mO7gP4jx.net]
>>456
誰に言ってるんや?
ワイに言ってるならDBの定義の話やからコードもクソもないやろ

470 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 02:34:08.07 ID:b0qHmmcL.net]
自意識過剰だね
ド頭は大丈夫ですか?

471 名前:デフォルトの名無しさん [2016/06/06(月) 02:21:20.33 ID:6giGfHQ3.net]
NHKのネットラジオを、どうにかしてクライアント側のJSだけで録音したいと思ってる
(基本的にサーバ側の処理は無しにしたい)
ストリーミングの録音の実装は初めてなんだが、どうやったら良いのだろうか?
何らかのライブラリを使えば楽そうだとは思うが…

472 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 05:01:20.04 ID:QbKl1YZH.net]
どうやったらっていうか?
なぜそんなことが可能だと思った?

473 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:22:15.75 ID:23OtUYll.net]
>>461
ローカルに node.js を立てるとか。



474 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:05:53.55 ID:RzJ8yYQp.net]
パケットキャプチャ

475 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 05:14:58.76 ID:Gl1NOXsx.net]
>>460
こいつすぐに煽るからわかりやすいな

476 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 19:02:47.33 ID:PnKxWLGB.net]
>>431
ありがとうございました。
できるようになりました。

477 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 19:26:52.79 ID:87JRkB9l.net]
>>465
俺ならもう少し嫌な感じで煽るよ。

478 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:52:28.55 ID:zEmhDMcI.net]
じゃあ俺は馴れ馴れしいコンセプトで煽ろうかな。

479 名前:デフォルトの名無しさん [2016/06/08(水) 21:39:35.82 ID:BBcfGQEZ.net]
煽りとかいらねえから
ちゃんと質問に答えてやれよ

480 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 22:37:16.03 ID:ISsCi+NM.net]
>>350
> あと、Array.prototype.lastなんて夢でも死んでも使わないように。

ありがとうございます。今のところ、そこに直接追加するような予定はありません。

>>353
> あくまでも便宜上のサンプルねので念のため

察しの悪い俺ですが、この点についてはそのように理解しております。ご安心下さい。

で、ですね。今までは個別の変数について var a = []; a.f = function () {}; なんぞしていて、
それで十分だったんですが、インスタンスの数が増えそうだぞって場面がチラホラ出てきました。
そこで、配列を継承したようなクラス?(←便宜上)が必要になりました。

A = function () {};
A.prototype = [];
A.prototype.first = function () {return this[0];};
var a = new A();
var b = [];
a.push(123);
b.push(456);
alert(a.first()); // これが呼び出せる
//alert(b.first()); // こっちは使えないので汚染されてなくて安心。

今のところ↑と言う風に、A.prototype = []; として単に何となく設定しているのですが、
こういうことをしたいときのイディオムみたいなものはjavascript界隈にありますか?

481 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:26:24.28 ID:EGkuN86i.net]
Web Workerの学習をしたいのですが、此方で大丈夫でしょうか?

482 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:46:22.16 ID:e3vAFbmO.net]
var F = function(age){ this.age = age; }
var f1 = new F(1);
var f2 = new F(2);

var ary = [];
ary.push(f1);
ary.push(f2);

console.log(f1, f2, ary);

prototypeなど使わずに、普通にこれでいい

483 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:04:45.80 ID:5KODI7Ed.net]
F ←この手の一文字もん大っ嫌いだは



484 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:05:55.20 ID:dIu2vu4F.net]
独り言はキミのスマホのメモ帳にどうぞ

485 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:25:17.23 ID:rjZdspVd.net]
スマホ持ってない私みたいのはどうすればいいんですか?

486 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:31:01.62 ID:E+QhxTx8.net]
var F = function(age){ this.age = age; }

こう書くぐらいなら

function F(age){ this.age = age; }

こう書けばいいのに。

487 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:35:16.54 ID:E+QhxTx8.net]
>>475
中古で安いの探せば3000円ぐらいで買えるのでは?

488 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 13:53:50.48 ID:QTm6YzLa.net]
>>472
その方法でどうやってfirst()を呼び出すのかな

489 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 14:40:04.41 ID:G4u6WZVB.net]
>>476
後者は旧石器時代の方式だな

490 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 16:54:36.03 ID:+YsNEGfA.net]
内容が等価じゃないのになんで新旧の話になるの

491 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 17:06:35.65 ID:bsniAtVU.net]
だよな。
ぜんぜんちゃうやんw

492 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 17:26:41.69 ID:G4u6WZVB.net]
>>480
旧石器時代には後者の方法が多用されていたが、それでは問題があるので
近代にはめったに使われなくなったということだが

493 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 19:11:58.00 ID:U5aI2wbo.net]
>>482
どちらもES3の頃から存在して使い分けされていたわけだが
関数式を使わない時代っていつだ?
せめて、関数名ぐらいつけろよ、といいたい



494 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 19:22:11.65 ID:Homi8Ck7.net]
hoisting を嫌う

495 名前:人はこう書くが、新旧いうもんでもない
const fn = function fn () {};
[]
[ここ壊れてます]

496 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 19:32:23.75 ID:KvDILg9T.net]
>>470
そのコードが制限付きで動作している事を理解していればそれでいい
- iterable でない(Symbol.iteratorで対応可能)
- a[100] = 1; で length を書き換えない(new Proxy で対応可能)
- a.length = 5; が働かない(Object.definePropertyで対応可能)
- 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)

497 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 23:45:53.30 ID:W5L1fKQF.net]
>>485
詳細にありがとうございます!!

> - a[100] = 1; で length を書き換えない(new Proxy で対応可能)
> - a.length = 5; が働かない(Object.definePropertyで対応可能)

ありがとうございます。それらの不具合は気付いていませんでした。

let a = new Proxy(new A, {
set: function(target, property, value, receiver) {
let i = parseInt(property);
if (i === i && target.length <= i) target.length = i + 1; // a[n] = x;に伴うlengthの更新に対応。
else if (property === 'length' && value < target[property]) {
target.splice(value, target[property] - value); // a.length = n;の代入時の挙動(の一部?)をケア。
}
target[property] = value;
return true;
}
});
Object.defineProperty(a, 'length', {enumerable: false, writable: true, value: 0});

これでとりあえずケアできているようではありますが、
Proxyに非対応なブラウザもあるようなので注意ですね。

498 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 23:47:09.04 ID:W5L1fKQF.net]
>>485
> - iterable でない(Symbol.iteratorで対応可能)

現時点ではワケが分かっておりませんが頂いたヒントは大事に記憶しておきます。

> - 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)

これも今確認しました。concat使えないの悔しいです。

Object.defineProperty(a, 'concat', {enumerable: false, value: function () {
return A.prototype.concat.apply(this.slice(), arguments);
}});

しかしまぁこういうのを結局書いていくのは悔しいですね。
ちょっとラクしたいだけなのに段々大袈裟になっていくという…。

499 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 00:39:24.13 ID:G+eNnn4N.net]
>>485
言っていることは間違いではないが、(結果的にでも)無垢な少年を騙すのはいかがなものか、、、

>>487
てかお前、それ自分でやってておかしいって思うだろ?
ここの連中は仕様には詳しいが、コードを書いてないから、実装方式については話半分に聞け。
(まあ今回は君が勝手に突っ走ったのであり、騙したわけではないとは思うが)
そのコードを見る限り、君は自力で解に辿り着けるはずだ。

俺がぱっと思いつくだけで解は3通りある。当たりかどうかは答えてやるから、冷静に考えてみろよ。

500 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 01:01:27.01 ID:DHroUP1C.net]
javascriptについて質問があります。
初回起動時のform(画面項目)の値と現在の値を比較して1つでも変更があった場合にはポップアップを表示するといった処理を実装したいのですが何か良い方法があれば、ご教授お願い致します。

501 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 01:02:08.05 ID:DHroUP1C.net]
>>489 続き
はじめはその項目のvalueとdefaultValueにて比較できると思いましたが、defaultValueは画面を再描画するタイミングで取得しますが、行いたい処理の途中でアクションが走り必ず再描画されるタイミングがあるためその方法では比較できないことに気づきました。

502 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 01:02:31.57 ID:DHroUP1C.net]
>>490 続き
(また項目の入力チェックなのでエラーになった場合にも)

なので再描画されても、初期表示時の

503 名前:値と現在の値を比較する方法はないでしょうか…
ちなみに画面はJSPにて実装しており、項目はtextやradioやoptionなどあります。
[]
[ここ壊れてます]



504 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 01:28:33.37 ID:rm3c6PtR.net]
>>482

https://mitsuruog.github.io/javascript-style-guide/#%E9%96%A2%E6%95%B0functions

7.1 関数式より関数宣言を利用してください。

なぜ? 名前が付けられた関数宣言はコールスタックで簡単に見分けることができます。
さらに関数宣言は関数の本体が巻き上げられます。それに対し、関数式は参照だけが巻き上げられます。
このルールにより、関数式の部分を常にアロー関数で置き換えて利用することができます。

// bad
const foo = function () {
};

// good
function foo() {
}

505 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 01:45:19.78 ID:rm3c6PtR.net]
function Klass() {
}

という書き方が古臭いとかいうことは当然なくて、
特定の場合では、var hoge = function() {} と書くべきという話を、
頭の悪い、なーんも考えてない馬鹿が、
絶対にvar hoge = function() {} と書かないといけない、
これからはfunction hoge() {} と書いてはならないんだ!って
言ってるだけ。

function Klass() {} という書き方が古くなったとか
聞いたこと無いし、使っていいし、むしろ推奨されている。

ほんと何も考えてない、誰かにaといわれれば
理由も考えずに妄信的にaばっかり使う、そんなやつが多いよなw

506 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 02:03:50.61 ID:G+eNnn4N.net]
>>493
俺は仕様には詳しくないから具体的に何が問題になるのかは分からないが、
基本的に「普通」の書き方にしておいた方がいいと思うぞ。
というか、何故お前らが妙なこだわりを持つのか、かなり謎なんだが。

> var Person = function () {
> console.log('instance created');
> };
>
> var person1 = new Person();
> var person2 = new Person();
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

507 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 02:06:08.67 ID:rm3c6PtR.net]
>>494
そこに書いてあるだろw

// Student コンストラクタを定義する
function Student(firstName, subject) {
// 親のコンストラクタを呼び出す。呼び出しの際に "this" が
// 適切に設定されるようにする (Function#call を使用)
Person.call(this, firstName);

// Student 固有のプロパティを初期化する
this.subject = subject;
};

これは普通の書き方。

508 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 02:18:52.51 ID:G+eNnn4N.net]
>>495
おっと?これは失敬。
ということはこれについては統一見解はなくて、どっちでもいいって事だな。

509 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 02:49:43.87 ID:OOVSLX1/.net]
>>495
引用元もそうなってたけど、
最後のセミコロンはいらないよねぇ。

510 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 05:22:06.39 ID:naViO+5c.net]
どっちでもいいわけないだろ
アホかこいつ

511 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:02:38.57 ID:52VYMGKm.net]
>>486-487
いろいろと挙動がおかしいのでよく確認してみるといい
繰り返すが、A.prototype.concat は汎用的ではない
https://jsfiddle.net/cw8umnqd/

512 名前:デフォルトの名無しさん [2016/06/10(金) 08:21:29.14 ID:o8hFzx97.net]
結局、コンストラクタ用の関数を書くときにも、

関数式よりも、巻き上げのある関数宣言の方が、良いのか?

513 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:31:51.96 ID:52VYMGKm.net]
>>487
> しかしまぁこういうのを結局書いていくのは悔しいですね。
ビルトイン関数には汎用的なものと汎用的でないものがあって、汎用的でない機能をエミュレーションするのは単純じゃない
(とはいえ、JavaScriptは汎用的なプロパティ/関数があるだけエミュレーションするのは楽な方だと思う)
内部的に new Array を保持しておき、new Proxy で透過的に new Array を参照すらば比較的楽に実装出来るが、コストがかかる
完璧なエミュレーションに拘らないのであれば妥協も必要



514 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:33:32.04 ID:INHt9BTU.net]
>>489
この状態と比較したい、って状況で、「画面の対象のコントロール回ってvalueを;かなんかで繋いで返す」関数作って、それ呼んで値を覚える。
変更チェックかけるときに、もう一回その関数呼んで、覚えたものと===で無ければ何かしら変更があった。
ってやってるよ。

「対象のコントロール」にはclassにcheckDatumとか空クラスつけとけばそれで列挙できるし。

515 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:47:37.80 ID:BhzVNYOI.net]
varとfunctionが同じだのセミコロンいらねえだの
こんなのが毎日偉そうに能書き垂れてんの?
そりゃサンプル出せって言われたら黙るわけだ

516 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 09:33:17.22 ID:o8hFzx97.net]
>>485-487
Groovyのメタプログラミングなら、

実行時に既存のクラスに、メソッドを追加するなら、Category・Mixin。
メソッド・プロパティを変更・追加するなら、ExpandoMetaClass

そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?

517 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 09:36:28.17 ID:+uuPJDCE.net]
>>500
> 関数式よりも、巻き上げのある関数宣言の方が、良いのか?
何も考えてねぇ馬鹿は、変数の巻き上げの問題(もちろん理由がある)の話を、
全く関係ない関数にまで適用しようとする(笑)
理由は何だよw

ブロック内だけで使う関数など、関数式でなければいけない場合もあるが
通常は関数宣言の方がいいに決まってるだろ。

C言語は宣言された関数しか使えなかったため「前方宣言」などという
物が生み出されてしまったが、それ以降、それ以外の殆どの言語は
関数はどこで宣言しても(巻き上げされたかのように)使うことが出来る。

518 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 09:40:10.83 ID:4srunpG+.net]
所詮は自己満足の世界なんだよ

519 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 09:40:12.48 ID:+uuPJDCE.net]
普通に関数に名前(コンストラクタも含む)をつければいいのに、
「さいきんのクールなプログラマはvarで関数入れて使うんだぜ!
今時関数に名前つけるなんてのは旧石器時代だな!」とか言ってるんだぜw

バカっぽいだろ?事実なんにも考えてない。
デバッガ時に関数名表示がでなくなる問題があるというのにな。

520 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:33:45.27 ID:GFWTaLNc.net]
>>483
> どちらもES3の頃から存在して使い分けされていたわけだが
誰もが(いいすぎ)使い分けるようになったのは、近代になってから

> 関数式を使わない時代っていつだ?
だから旧石器時代だって
ゼロ年代初頭あたりまで

521 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:36:19.23 ID:GFWTaLNc.net]
>>493
> function Klass() {} という書き方が古くなったとか
> 聞いたこと無いし、
グローバルネームスペースを汚染する弊害について聞いたことないのか

522 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 11:04:28.13 ID:rddDxbo4.net]
>>509
クロージャの中でやる分には大丈夫なんじゃないの?巻き上げられたっけ?

523 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 11:31:26.83 ID:xHgczCBO.net]
今時グローバル汚染するようなアホおまえくらいだから



524 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 11:46:24.26 ID:XqAkh7YW.net]
なんであんなに無名を濫用するのかと思ってたが
そんなしょうもない理由だったのか

525 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:12:05.29 ID:dpRBFPup.net]
>>509
聞いたことないが、その弊害の発生条件は?

526 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:36:22.02 ID:4srunpG+.net]
そうだよな
汚染ってなんだよ

527 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 15:06:36.55 ID:LT2C5Mf1.net]
prototype使って、汚染しちゃうのは初心者がやってしまう失敗

528 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 15:59:08.90 ID:DxAsZ/F5.net]
1個くらいならバレないんじゃない?

529 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 16:05:16.91 ID: ]
[ここ壊れてます]

530 名前:3bO9ZAmE.net mailto: Object.prototype.hogeにバーカって書いとけばいいのか []
[ここ壊れてます]

531 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 18:15:57.76 ID:LT2C5Mf1.net]
コンソールに出すの?
アラートで出すの?

アラートで出たら、めちゃくちゃ怖いかもww

532 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:06:13.75 ID:qrHSyLm3.net]
prototype汚染という考え方も古くなってきた感はあるが…
しかし、風呂敷を広すぎではないかね
元々はprototuype汚染の話ではなかったわけで段々と本題がずれてきているように思う

533 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:27:07.34 ID:qrHSyLm3.net]
>>489-491
画面を再描画するならサーバサイドの処理があるはずだが、それはJavaScriptで実装すべき案件なのかね
フォームで値を受け渡してサーバサイドで処理、セッションを使う等、いくつか対策があるはずだが
jsを使うなら再描画させずに動的にDOMを書きかえれば済むが、マルチポスト先を読む限りではこの質問者にはハードルが高そうだな
https://teratail.com/questions/37462
https://teratail.com/questions/37489



534 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 20:02:15.97 ID:G+eNnn4N.net]
>>500
少なくとも文法上は大差ないのだろう。MDNにも説明はある。
> 全ての関数は実際には Function オブジェクトです。
> Function コンストラクタか関数宣言か関数式か
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope
new Functionや非トップレベル関数(strict modeでは禁止)も含めて書いてあるから余計に分かりにくくなっているが、
要するにどうでもよさそうだ。
現実的にはコンストラクタだけ前方参照できてもプロトタイプが用意できていないから意味がない。
だから関数式の方が似合っている気はする。

ちなみに汚染については変数名か関数名かだけでどちらも汚染する。
また、デバッグ時にこんなところが関数表示されたところで嬉しくない。
どのみちコンストラクタが呼ばれればコールスタックには載るし、ブレークポイントも当てられる。

お前らは異様に文法にこだわることを止めて、もっとコードを書いた方がいい。
指摘が間抜けなのは、コードを書いてないからだ。(実践的ではない)
○○の問題がある(キリッというのは正しいが、それが重要なことなのか、わりとどうでもいいことなのか、区別が出来ていない。

>>520
> マルチポスト先
よく見つけたなw

というかこの手のモラルがない奴、急に増えたよな?何か理由があると思うのだが。
昔から居たけど、マルチポスト先が増えたから発覚しやすくなっただけか?

535 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 20:08:51.44 ID:RNr8lFlW.net]
>>499
どうもありがとうございます。おかげで気がついてしまいました。
concatはArrayを受け取ってArrayを返すつもりで>>487では書きましたが、
よく考えると今回拡張したA(以下単にA)を引数に受け取りたいですし、
返す結果もよく考えるとAであったほうが嬉しいかもしれません。

実装の手間という面だけでも尻込みしつつあったんですが、
いまや設計の方針と言う面でも相当きな臭いというか。
concatの返す値が決められなくて不気味。使うときに不安。
仮にsliceやspliceなどのもまとめて全部Aを返すように統一したとしても、
最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。

>>501
> 完璧なエミュレーションに拘らないのであれば妥協も必要

そのつもりだったんですがいざ用意してみると、
欲が出るわ粗が目立つわ方針で不安になるわで散々でした。
今後は生のArrayのみを運用していくつもりです(結論)。

>>504
ありがとうございます。Groovyはぐぐったことすら無いので分かりません。

> そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?

はい。完全にそのとおりです。

536 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 21:47:53.40 ID:qrHSyLm3.net]
>>522
> 今後は生のArrayのみを運用していくつもりです(結論)。
それはそれで一つの答えだが、やや狭い世界になっていると思う
> 最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。
2つの世界が存在することは問題なくてそれが息をするように自然に使えるかどうかが問題ではないだろうか
mew Array と new A を行き来する世界はよくないが、それぞれの世界で完結する処理を書けるのならそれでいい
どちらかといえば、設計指針を決めかねて迷っているのだと思うが…
基本的には new A は A だけで閉じた世界(new Array を返してはならない)であるべきなので A#concat は new A を返すべきだと思う
逆に A#push は汎用的なので特別な事をせずとも new A を返す
このように汎用的な関数を基本的には使って非汎用関数に対しては Polyfill を作る要領でコードを書いていけばそれなりのものができるだろう
別の設計指針としては new Map を new ArrayMap 的な設計にして作り直しても面白いかもしれない
new Map は関数でsetter/getterを作るので new Array よりは互換コードを書きやすいはずだ
機会があれば、是非新しい世界を作ることに挑戦してみてほしい

537 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 21:58:16.74 ID:MdFWcZSW.net]
こういう人に読ます気がない文章は目の前で破り捨てるに限る

538 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 22:12:29.26 ID:AlU+uWXE.net]
ES6だとプロトタイプ汚染がないのかと思ったけどもしかして新機能がない?

結局
Object.defineProperty(...){........}
と書かんといけんのか

539 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 22:18:01.79 ID:G+eNnn4N.net]
この程度で躓くのならもっと長いMDNは当然無理で、池沼のままなのもむべなるかな

540 名前:523 mailto:sage [2016/06/10(金) 22:51:59.24 ID:qrHSyLm3.net]
読みにくくてすまん
どういうわけが改行コードが一部消えているな…

541 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 23:08:39.56 ID:+uuPJDCE.net]
*∧ ∧:・。゚*。 : ・ 。 ゚ *★.
(*・ω・*)       ゚ *。*
*〇 〇………………………**
 祝☆jQuery 3.0 リリース https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/
**………………………………*

+ JavaScript & jQuery 質問用スレッド vol.6 + [無断転載禁止]©2ch.net
echo.2ch.net/test/read.cgi/hp/1465566635/

542 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 23:10:44.42 ID:+uuPJDCE.net]
>>509
> > function Klass() {} という書き方が古くなったとか
> > 聞いたこと無いし、
> グローバルネームスペースを汚染する弊害について聞いたことないのか

なにいってんだおめぇ?

var Klass = function() {} という書き方をしても
グローバルネームスペース汚染してるだろw

function hoge() {
  function Klass() {}
}

↑Klassがグローバルネームスペース汚染ってどういうこと?w

543 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 23:13:14.16 ID:+uuPJDCE.net]
>>524
同じこと思ったw



544 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 00:01:17.78 ID:MQjYfq34.net]
ライブラリスレが復活してた

JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
echo.2ch.net/test/read.cgi/hp/1465399470/

545 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 08:41:10.92 ID:MQjYfq34.net]
jQuery推しが酷いと思ったらテンプレ改変されていたのか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<397KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef