X



+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2017/07/31(月) 21:10:56.03ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
0204Name_Not_Found
垢版 |
2017/09/09(土) 05:19:10.51ID:???
このhonya1だけをいじりたいのですが、何か方法ありませんか?
jqueryセレクターで色々やったんですが出来ませんでした

<div>
honya1
<p>honya2</p>
</div>
0205204
垢版 |
2017/09/09(土) 05:23:46.33ID:???
こんな感じだったりもします

<div>
honya1
<p>honya2</p>
honya3
<p>honya4</p>
</div>
0206Name_Not_Found
垢版 |
2017/09/09(土) 05:45:05.40ID:???
>javascriptが有効の場合のみ表示する
で、なんでdocument.writeだけと思ったのかは謎だが
出力処理それしか知らんかったってことか?
innerHTMLでも使っときゃいいんじゃね
0207Name_Not_Found
垢版 |
2017/09/09(土) 08:08:08.11ID:iPGueJu4
>>203>>206
ほとんどの参考書は出力はdocument.writeで教えているけど
0208Name_Not_Found
垢版 |
2017/09/09(土) 09:33:51.55ID:???
>>203
タイミングによるだろ
使わないのは確かだが
0209Name_Not_Found
垢版 |
2017/09/09(土) 12:04:45.08ID:???
>>201
> javascriptが有効の場合のみ表示するには
> 1行ずつdocument.write('');で囲ってやる以外に方法はないんですか?

そういう時によく使われているのが
https://modernizr.com/

表示・非表示というのは見た目の問題なのでCSSでやるのが鉄則

どういう仕組かは俺が説明するよりも
modernizrを調べてもらったほうが早い

JavaScriptが有効な場合だけじゃなくて
いろんなものが有効な場合か?が判定できる。
0210Name_Not_Found
垢版 |
2017/09/09(土) 12:28:27.29ID:iPGueJu4
>>209
でも例えばセレクトフォームで1を選択した場合に入力フォームを表示
それ以外は非表示っていうような条件付きの表示にしたい場合
cssだと対処できないんだよな
0211Name_Not_Found
垢版 |
2017/09/09(土) 12:49:34.42ID:???
>>210
できるよ?

「セレクトフォーム+入力フォーム」というコンポーネントが有るんでしょ?
セレクトフォームで1を選択した時に、そのコンポーネントの状態を
変えればいいだけだよ。

JavaScriptでやるのは状態(classやdata-*)の設定だけ
見た目はCSSで制御する
0212Name_Not_Found
垢版 |
2017/09/10(日) 09:06:38.41ID:???
promiseに関する疑問です
thenメソッドに、promiseオブジェクトを返す関数を渡すと、
thenを更に後ろに書いてメソッドチェーンに出来ますが
その関数が実行されるのは前の処理が終わったタイミングのはずですよね?
thenメソッドがメソッドチェーンで実行されるのは
promiseオブジェクトが生成されるより前のはずなのに、
何でメソッドチェーンに出来るのでしょうか?
0213Name_Not_Found
垢版 |
2017/09/10(日) 09:17:14.39ID:???
実際に即実行されるのはthenで、thenがpromiseを返しているからだよ
thenに渡した関数はpromiseが解決するまで保持される
0214Name_Not_Found
垢版 |
2017/09/10(日) 09:18:15.17ID:???
>>212
then()が実行されるのは、「コールバック関数を呼び出した時」だから
0215214
垢版 |
2017/09/10(日) 09:20:20.69ID:???
正確ではなかったな
「then()に渡された関数が実行されるのは、Promise内のコールバック関数が呼び出した時だから」
0216Name_Not_Found
垢版 |
2017/09/11(月) 01:17:54.54ID:???
>>213
thenに渡した関数がpromiseを生成して返さなければいけないと思っていたのですが
そうじゃないんですね
でもthenメソッドがpromiseを生成するにしても
promiseはコンストラクタ内で非同期処理をすぐに実行するので
生成された時点で非同期処理が走ってしまうような気がします
内部動作が謎です・・

>>215
いや、それは分かってるつもりです・・
0218Name_Not_Found
垢版 |
2017/09/11(月) 05:41:39.06ID:???
Promiseコンストラクタやthenメソッドの振る舞いが、プロミスの本質を示してると考えるからそうなる
それらの関数はたまたまそういう振る舞いになっているだけであって、
もっと言えば便利で都合のいいように置かれているだけであって、

それらはプロミスの概念を為すための必然な設計ではないし、
Promiseコンストラクタがこういう挙動をするから、thenがどうこうだとか、プロミスってこういうものと言えるものではない

PromiseコンストラクタはPromiseコンストラクタの挙動をして便利にプロミスを作り、
プロミスからはthenメソッドがthenメソッドの挙動をして便利にプロミスを作るというだけのこと
そこを難しく考える必要は全くない
0219Name_Not_Found
垢版 |
2017/09/11(月) 07:06:26.05ID:???
>>216
それが分かっているなら、「then()が呼び出された時」と「コールバック関数が呼び出された時」が同じではないことも分かると思うのだが
0220204
垢版 |
2017/09/11(月) 13:31:07.78ID:???
>>217
見たのですが、それはただの$(ele).text()と$(ele).html()の紹介なので
教えてもらって恐縮ですが求めているものとは違うようです

改めて>>204-205分かる方いたらお願いします
0221Name_Not_Found
垢版 |
2017/09/11(月) 13:47:51.67ID:???
>>220
$("<div>honya1<p>honya2</p></div>").contents().get(0).textContent = "honya3";
0222Name_Not_Found
垢版 |
2017/09/11(月) 13:52:58.01ID:???
childNodes使えばいんじゃね
0223Name_Not_Found
垢版 |
2017/09/11(月) 13:55:28.06ID:???
あ、jQueryならcontents()でもいいか
0224Name_Not_Found
垢版 |
2017/09/11(月) 14:09:31.64ID:???
>>220
$('div').contents()[0].replaceWith('ここを変更');
0225Name_Not_Found
垢版 |
2017/09/11(月) 14:11:00.34ID:???
idなりclassなりつけとけよ
htmlが不変ならいいけど
CMSとかでget0)とかで取るのはバグの原因
0226Name_Not_Found
垢版 |
2017/09/11(月) 15:57:36.80ID:???
>>221>>224
contents() まさにこれです!
ドンピシャです、contents() 凄い便利
長年悩んで来たことだったんで目から鱗です
ありがとうございました
0227Name_Not_Found
垢版 |
2017/09/11(月) 16:31:45.59ID:???
ほんと低レベルやな
せっかく助言があるのにね
0228Name_Not_Found
垢版 |
2017/09/11(月) 16:35:26.89ID:???
ええんやで
君も大概低いんやから
0229Name_Not_Found
垢版 |
2017/09/11(月) 17:52:06.06ID:???
同じプリミティブ型の値が与えられたら同じオブジェクトを返すようなことは可能?
typeof(MyObject(5)) === "object" と MyObject(5) === MyObject(5) のどちらもtrueになって欲しい
オブジェクトを一時的に保存しておくのは無しで
0230Name_Not_Found
垢版 |
2017/09/11(月) 18:24:25.17ID:???
保存しちゃダメならインスタンスが同一にならないから無理じゃね?
0232Name_Not_Found
垢版 |
2017/09/11(月) 19:24:43.63ID:???
>>229
そういうことをしたいがためにFlyweightパターンがある訳だが実装を制限するなら知らん
0233229
垢版 |
2017/09/11(月) 19:59:32.50ID:???
ユーザー名とデータを紐付けた上でWeakMapでキャッシュさせたかったのですが自前で実装することにします
ありがとうございました
0234Name_Not_Found
垢版 |
2017/09/11(月) 20:16:55.03ID:???
>>233
>>229で言ってるオブジェクトをWeakMapのキーにしたいのか?
だったらやめとけ
保存しない(変数に入れて持つこともしない)なら無理だ
それにWeakMap自体サポートしてるブラウザ少ないし、仕様固まってないからサポートしてても変更されるかもしれん
そんなもの使ったらトラブルのもとだぞ
0235Name_Not_Found
垢版 |
2017/09/11(月) 21:45:00.03ID:???
>>229
これってImmutable.jsでできんじゃないかな。
0236Name_Not_Found
垢版 |
2017/09/11(月) 22:18:46.09ID:???
いや、Immutableは内部で保持してる
>>229は「一時的に保存しておくのは無し」ってことなので保持しちゃダメ
なので不可能
0237Name_Not_Found
垢版 |
2017/09/11(月) 22:51:39.99ID:???
>>229
無理なんだが、その要件でなぜObject型が欲しいのかが謎
プリミティブ型とリファレンス型の違いを覚えた後に、設計から考え直した方がいい
0238216
垢版 |
2017/09/11(月) 23:06:23.39ID:???
https://jser.info/post/77696682011/es6-promises/
>then の返り値(*1)に対してもthen (next-then)で処理を追加することができる。
>next-then に設定されたコールバックは
>*1の値がsettles (succeeds/fails)になった時に呼ばれる

と言うことなので、
thenが生成するpromiseのコンストラクタには
thenに渡したonFulfilledとonRejectedをラップした関数が渡される
その関数は、親promiseのsettledな状態変化をコールバックで受け取ってから、
親promiseの変化に状態に即した処理を開始する
という感じでしょうか?
thenが生成するpromiseを、
単純にthenの引数でnewしただけのpromiseと思っていたので、
「???」となっていましたが、もう少し複雑なものなのでしょうね
0239Name_Not_Found
垢版 |
2017/09/12(火) 00:08:07.70ID:???
なんかPromiseで悩んでいるようだな?
話の流れを読まずに語るぞ

まず一番Promiseっぽくない使い方だな

function foo() {
 Promise.resolve(0)
  .then(function(zero) { return 1; })
  .then(function(one) { return 2; })
  .then(function(two) { return 3; })
  .then(function(three) { return 'end'; })
  .catch(function(e) { console.log(e) });
 console.log('start')
}

最初に実行されるのは start の部分だ。
なぜならPromise.resolveっていうのは内部で
setTimeoutを使っている・・・からだと思えばいい。

そして、Promise.resolve(0)をスタートに、
関数が上から順番に実行されていくわけだ。
戻り値は次の関数の引数になるぞ

ここで言いたいのは、上から順番にthenの中身が実行されていくということだけだ
0240Name_Not_Found
垢版 |
2017/09/12(火) 00:11:13.48ID:???
次にPromiseを使うが意味がない使い方の例を示すぞ

function foo() {
 Promise.resolve(0)
  .then(function(zero) { return Promise.resolve(1); })
  .then(function(one) { return Promise.resolve(2); })
  .then(function(two) { return Promise.resolve(3); })
  .then(function(three) { return Promise.resolve('end'); })
  .catch(function(e) { console.log(e) });
 console.log('start')
}

動きとしては一緒だ。だけど戻り値が単なる値ではなく
Promiseオブジェクトになったということだ。

これは>>239と全く同じ動きをする。
というよりthenが引数の関数を呼び出すだろ?
その戻り値がPromiseオブジェクト以外なら、
内部でPromise.resolveを実行して
Promiseオブジェクトに変換しているわけだ。
0241Name_Not_Found
垢版 |
2017/09/12(火) 00:16:36.00ID:???
次にもうちょっとマシな例を示すぞ

function foo() {
 Promise.resolve(0)
  .then(function(zero) { return new Promise(function(resolve, reject) { resolve(1) }; })
  .then(function(one) { return new Promise(function(resolve, reject) { resolve(2) }; })
  .then(function(two) { return new Promise(function(resolve, reject) { resolve(3) }; })
  .then(function(three) { return new Promise(function(resolve, reject) { resolve('end') }; })
  .catch(function(e) { console.log(e) });
 console.log('start')
}

>>240では関数が呼ばれたら、すぐにPromise.resolve()を
呼び出してPromiseオブジェクトを返していたが、
今回はnewでPromiseオブジェクトを返す例だ。

new されたPromiseオブジェクトは引数の関数を実行する。
引数の関数はすぐにresolveする。
これも全く同じ動きをする。
0242Name_Not_Found
垢版 |
2017/09/12(火) 00:21:07.20ID:???
では最後にクイズだ

function foo() {
 Promise.resolve(0)
  .then(function(zero) { return new Promise(function(resolve, reject) { }; })
  .then(function(one) { return new Promise(function(resolve, reject) { }; })
  .then(function(two) { return new Promise(function(resolve, reject) { }; })
  .then(function(three) { return new Promise(function(resolve, reject) { }; })
  .catch(function(e) { console.log(e) });
 console.log('start')
}

このようにしたらどうなるだろうか?


答は、エラーはでないが次に進むことはない処理になる。

.thenの引数の関数は、たしかにPromiseオブジェクトを返している。この関数自体は問題ない。
だが、そのPromiseオブジェクトはresolveもrejectも実行しないから
次に進むことはない。そこで止まってしまう。

逆にすぐにresolve()するのではなくsetTimeoutでも何でもいいが
何かの処理の後にresolve()するようにすれば・・・?

そう、非同期で実行される処理が終わってから
次に進むわけだよ。
0243Name_Not_Found
垢版 |
2017/09/12(火) 01:28:09.67ID:???
せっかく無料で公開してくれてんだからazuのpromiseの本でも読みなよ
0244Name_Not_Found
垢版 |
2017/09/13(水) 17:47:19.69ID:???
firebaseについて勉強中です
サーバーのアクセスに必要なパラメータがソースで丸見えになりますが
これを使って他人にデータをいじられる可能性はないのでしょうか?
0245Name_Not_Found
垢版 |
2017/09/13(水) 18:45:57.45ID:???
そのための認証システムだろ
0246Name_Not_Found
垢版 |
2017/09/13(水) 23:48:19.39ID:???
それはそうなんですが認証させる部分も丸見えなのが気になります
ソースをコピーして他のサイトを立ち上げたら、
そこからも普通にデータベースを操作出来てしまうような?
0247Name_Not_Found
垢版 |
2017/09/14(木) 00:05:50.11ID:???
>>246
やればいい
本当に知りたければセキュリティを本気で学ぶ必要がある

一応言っておくと、その観点は結構いい線いってる
しかし当然のようにその観点からの攻撃はちゃんと守られている
(下手なアップデートで攻撃され放題になることもある)

偉そうに言ってるけど、俺はその辺無理と思ってフレームワークに逃げた口だ
0248Name_Not_Found
垢版 |
2017/09/14(木) 00:34:20.03ID:???
>>246
認証してアクセス権が無ければ読み書き不可に出来るし
書き込みは可能だが変更は不可能にする事は出来るし
キーを知らなければアクセス出来ないようにも出来るし
あるキーをデータに含んでないと書き込めないようにも出来る

面倒ではあるがやりようによっては大体のことが出来るぞ
0249Name_Not_Found
垢版 |
2017/09/14(木) 10:12:37.24ID:???
>>247-248
対策の方法はあるんですね
ではこのまま勉強していきます
ありがとうございました
0250Name_Not_Found
垢版 |
2017/09/14(木) 11:15:08.75ID:???
function wait(ms){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve();
},ms);
});
}

wait(1000).then(()=>{
console.log('done');
});

こんな感じの指定した時間待つだけのPromiseを提供しているユーティリティーライブラリで
いいのがあれば教えて下さい
0251Name_Not_Found
垢版 |
2017/09/14(木) 12:55:39.96ID:???
君が書いたそれでいいじゃん
0253Name_Not_Found
垢版 |
2017/09/14(木) 22:06:22.47ID:???
>>250じゃないですが、setTimeoutではなく
setIntervalを使って定期的にPromiseが
発動するようなものはないですか?
0254Name_Not_Found
垢版 |
2017/09/14(木) 22:13:17.41ID:???
>>253
promise は根本から一度限りのイベント用にあるもの
setInterval じゃだめなのは何故?
0255Name_Not_Found
垢版 |
2017/09/14(木) 23:21:58.47ID:???
そういう用途ならEventEmitterでも使った方がいいんじゃない
0256Name_Not_Found
垢版 |
2017/09/15(金) 00:29:14.37ID:A42SYKF8
kanto.htmlの中で saitama.jsとchiba.jsとtokyo.jsとyamanashi.js を読み込んでるのだけど、

yamanashi.jsを外したいのだが、kanto.htmlのどの部分でyamanashi.jsを使ってるのか分からなくなってしまった。
どこの部分でyamanashi.jsを使ってるのか特定する方法はありますか?

Chromeなどのデバッグツールとか何でもよいので、何か方法があれば教えてください。
0257Name_Not_Found
垢版 |
2017/09/15(金) 01:28:44.94ID:???
>>251
ライブラリにあるものはライブラリを使った方が保守性が上がりますし
ライブラリの他の機能も視野に入ってくるのがいいです
>>252
ありがとうございます
見てみます
0259Name_Not_Found
垢版 |
2017/09/15(金) 04:04:55.93ID:???
>>256
デバッグして、yamanashi.js の中の、すべての関数に、break point を張って、
どこから呼ばれたか確かめる
0260Name_Not_Found
垢版 |
2017/09/15(金) 09:30:44.31ID:???
>>255
EventEmitterは2とか3とかあるようですが
どれを使うのが良いのでしょうか?
0261Name_Not_Found
垢版 |
2017/09/15(金) 11:14:12.84ID:???
>>257
ライブラリに機能を求めるというよりは
効率を求める意味で使用した方がいいよ
0262Name_Not_Found
垢版 |
2017/09/15(金) 11:41:07.60ID:???
>>260
機能の2と速度の3みたいな
あとはライブラリスレとかで聞いてね
0263Name_Not_Found
垢版 |
2017/09/15(金) 12:53:25.21ID:???
>>258
その頃はまだ実装されたばかりだし、Promiseのなんちゃってポリフィルと違って、
状態を外に見せないかつメモリリークを起こさないかつ継承可能にするため
内部的にWeakMapと同等のものを用いてるのと、継承可能やPromise Likeの受け入れとPromiseとの区別の処理なんかでどうしても簡素ななんちゃってPromiseよりは遅くなる可能性がある
0264Name_Not_Found
垢版 |
2017/09/15(金) 14:41:01.63ID:md1y6t7N
>>253

while()
0265Name_Not_Found
垢版 |
2017/09/15(金) 14:55:16.12ID:???
arrow関数式で
a => a+1
と式を書いた時にa+1が返ってくるのは分かりますが
a => a=a+1
と代入文を書いても、a+1が返ってくるのは何故でしょうか?
0266Name_Not_Found
垢版 |
2017/09/15(金) 15:32:31.45ID:???
最後に評価したものをreturnとするから
この場合はaに代入した値がa+1だから
0268Name_Not_Found
垢版 |
2017/09/15(金) 17:09:54.73ID:???
クライアントサイドで、JavaScriptのみでSMTP使ってメール送信できますかね?
情報が古いのですが、ActiveXかなんか使ってIEなら出来るようですが、
ChromeとかFirefoxとかでも可能な、普通のJavaScriptのAPIがあればそれでやりたいです。
SMTPサーバを指定して、ログインIDやパスワード入れて使うのを想定してます。
どう考えてもセキュリティ上厳しいような気はしますが。
サーバサイドでやると、どうしてもリクエストが多くなるため、
スパマー扱いされて、サーバのIPがSMTPサーバに拒否されるおそれがあるので、
各クライアントで送信するようしたいです。
0270Name_Not_Found
垢版 |
2017/09/15(金) 18:39:07.05ID:???
>>266-267
ありがとうございます
言われてみればそうですね
値を返すので、JavaScriptの代入は文ではなく式ということになるのでしょう
=を代入演算子と呼んでますし
0272Name_Not_Found
垢版 |
2017/09/15(金) 19:04:04.73ID:???
Storybookを使ってreact componentを作ってるんですが
ダミーデータとして文字列とか適当に毎回入力するのが面倒なんですが
ダミーデータ自動生成ライブラリってないですかね?
0273Name_Not_Found
垢版 |
2017/09/15(金) 19:11:33.28ID:???
>>272
自己レスです faker.jsってありましたね。
0274Name_Not_Found
垢版 |
2017/09/15(金) 19:46:38.00ID:???
>>268
この辺とか
ttp://artemyankov.com/tcp-client-for-browsers/
0276Name_Not_Found
垢版 |
2017/09/16(土) 12:26:38.13ID:???
firebaseはオフラインになっていても後から同期してくれるのがメリットですが
この機能に任せられるのって、
編集がバッティングする可能性がない場合だけですよね?
チャットアプリなんかは、ただ追加しあうだけなので問題になりませんが
同じアイテムを同時に編集できる場合や
階層構造を変更できる場合、
時間差同期によってデータが不整合をおこして恒久的に破壊されかねないと思います
そういうことはトランザクションを使えば避けられるのではないかと思いますが
そうなると使えるのはオンラインの時だけになりますか?
0277Name_Not_Found
垢版 |
2017/09/16(土) 12:28:34.86ID:???
>>275
なるほど
宣言代入はそういう挙動をするんですね
考えたことなかったです
ありがとうございます
0278Name_Not_Found
垢版 |
2017/09/17(日) 10:24:46.35ID:J64I4/e3
ttp://qiita.com/Layzie/items/465e715dae14e2f601de
これありますけどnew Stringで作られたのは文字列じゃないんだから
typeofで型チェックしても問題ないと思いますけど違いますか?

const a = 'a';
const b = new String('a');
console.log(a == b); // true
console.log(a === b); // false
console.log(a); // a
console.log(b); // [String: 'a']
console.log(typeof a); // string
console.log(typeof b); // object
0280Name_Not_Found
垢版 |
2017/09/17(日) 12:04:27.13ID:???
>>278
それは、他の言語だとそれは当然のようにstringのはずので、その感覚とずれるというお話なのだ
ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている

もしjs以外使ったこと無いなら
>これありますけどnew Stringで作られたのは文字列じゃないんだから
>typeofで型チェックしても問題ないと思いますけど違いますか?
これ以外に言いようはないと思うし、それはそれで良いことだと思う
ただjsの型は他言語とは大きく違うということは覚えておいたほうが良い
0281Name_Not_Found
垢版 |
2017/09/17(日) 12:12:51.17ID:???
> ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている

他の言語とはなに?
どのように難しいの?
0282Name_Not_Found
垢版 |
2017/09/17(日) 12:31:17.69ID:???
>>281
一般的に使用者の多いvba、webで親和性が高くあってほしいはずのphpで比較してみる。cも昔使ってたけど型の詳細忘れた、スマン
javaは詳しくないので知らん

配列。普通arrayだけど、jsはobject。何の配列でもobjectになる。objectの配列もobject。これが大体一番厄介なパターン。
まぁそれはlengthで分かるけど、とにかくnullがやばい。jsではundefindで名前が違うだけかと思えば、そうでもない。nullも存在する
未定義はundefind //了解
domで該当なしがnull //はい
var undefind=1; //!?!?!?!!?
console.log(undefind); //!?!?!?!!?
http://tokidoki-web.com/2014/12/javascript%E3%81%AEnull%E3%81%A8undefined%E3%81%AE%E5%8C%BA%E5%88%A5%E3%81%A8%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%82%84%E3%82%93%E3%82%88/
http://d.hatena.ne.jp/mindcat/20100512/1273683917
http://qiita.com/jkr_2255/items/cfce9b4419d5de32ba2b

色々といったけど、objectとundifendだけだったね。まぁこの2つはマジでやばいってことだけ覚えておいてほしい
0283Name_Not_Found
垢版 |
2017/09/17(日) 12:37:32.17ID:???
vbaとphpが特殊なだけでは?

Cだったらどうなる?
0284Name_Not_Found
垢版 |
2017/09/17(日) 12:46:36.14ID:???
>>283
特殊といえば言語は全部特殊。言語にはそれぞれ特徴がある。もし特徴がなければ別言語で良くね、になる
使用者の多いvba、phpはデファクトスタンダードとはいえなくとも、感覚的な基準にはなっている

ただ知る限り、未定義であるundefindに代入できる言語は存在しない
0285Name_Not_Found
垢版 |
2017/09/17(日) 12:49:20.55ID:???
代入できなくなったから、普通の言語になったってことだね
0286Name_Not_Found
垢版 |
2017/09/17(日) 12:54:11.11ID:???
今コンソールでやったら普通にできたんだが
0287Name_Not_Found
垢版 |
2017/09/17(日) 12:59:10.82ID:???
古いモードで動いてんだろw
0288Name_Not_Found
垢版 |
2017/09/17(日) 13:26:29.20ID:???
>>287
さぁ?
chrome+google.co.jpで試したけど
undefined=1
1
だとさ
0290Name_Not_Found
垢版 |
2017/09/17(日) 13:46:30.47ID:???
console.log(undefined=1) //1
console.log(undefined) //undefined

こういう話じゃないの?
0291Name_Not_Found
垢版 |
2017/09/17(日) 13:54:28.79ID:???
>>290
あぁごめん、そういうことだった
代入はできるけど取得はできないのか
な、なんだこれ…
0292Name_Not_Found
垢版 |
2017/09/17(日) 15:53:59.45ID:ca9PTnIh
'cloneNode' in document // true
document.hasOwnProperty('cloneNode') // false
どうしてですか?
0293Name_Not_Found
垢版 |
2017/09/17(日) 16:16:33.22ID:???
cloneNodeはdocumentではなくNodeの持つプロパティであって
hasOwnPropertyは継承元まで遡らないからだよ
0294Name_Not_Found
垢版 |
2017/09/17(日) 16:37:08.53ID:???
横だけど、以下もfalseになる。なんでだー(モヤモヤァッ
Object.hasOwnProperty(Node,'cloneNode')
false
0295Name_Not_Found
垢版 |
2017/09/17(日) 16:40:01.79ID:ca9PTnIh
なるほどそういうことでしたか
ありがとうございました
0296Name_Not_Found
垢版 |
2017/09/17(日) 16:46:28.97ID:ca9PTnIh
もう一つ質問させてください
"SVGAnimatedAngle" in window // true
window.hasOwnProperty("SVGAnimatedAngle") // true
なのに
for (let i in window)console.log(i)

Object.keys(window)に
SVGAnimatedAngleが含まれない出力されないのは何ででしょうか?
0297Name_Not_Found
垢版 |
2017/09/17(日) 17:10:54.98ID:???
"use strict"; undefined = 1; // error!

はい
0298Name_Not_Found
垢版 |
2017/09/17(日) 18:30:07.79ID:???
>>291
違う
代入はできていないけど、
式の返り値は当然右辺の物を返す

例えばobj.setというセッターが合ったとして、
a = obj.set = 1 というのがあったら
obj.setの状態と関係なくaは1になるのが自然でしょ、
つまりx = yの式は例外が起きない限り必ずyを返す
0299Name_Not_Found
垢版 |
2017/09/17(日) 18:34:38.56ID:???
>>294
使い方が間違っている
Node.prototype.hasOwnProperty('cloneNode')
0300Name_Not_Found
垢版 |
2017/09/17(日) 18:36:50.50ID:???
>>296
列挙不可に設定されているから
Object.getOwnPropertyDescriptor(window,'SVGAnimatedAngle').enumerable //false
0301Name_Not_Found
垢版 |
2017/09/17(日) 19:13:20.84ID:???
>>300
なるほどそうことでしたか
列挙可と列挙不可の両方取得する方法ってないですかね?
0302Name_Not_Found
垢版 |
2017/09/17(日) 19:20:19.09ID:???
Object.getOwnPropertyNames(target)

Object.getOwnPropertyNames(target.__proto__)

Object.getOwnPropertyNames(target.__proto__.__proto__)
0303Name_Not_Found
垢版 |
2017/09/18(月) 02:23:29.72ID:???
>>278
>new String('a');

まぎらわしいから、なるべく、文字列リテラルを使う
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況