- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

JavaScript HTML5

1名無しさん:2013/07/01(月)09:20:49 ID:ukT/HvmBn()
HTML5.JP - 次世代HTML標準 HTML5情報サイト
http://www.html5.jp/
2名無しさん :2013/07/01(月)11:19:23 ID:ukT/HvmBn()
初めてのHTML5ゲーム作成 2-4
http://homepage2.nifty.com/t_ishii/site/html5game/p2_4.html

データを保存する
localStorage.setItem("GameName_HighScore","0");

データを読み出す
highscore = localStorage.getItem("GameName_HighScore");
3名無しさん :2013/07/01(月)12:35:11 ID:ukT/HvmBn()
HTML5 テーブルテニス
http://homepage2.nifty.com/t_ishii/HTML5/tabletennis/index.html
http://homepage2.nifty.com/t_ishii/HTML5/tabletennis/tabletennis.js
4名無しさん :2013/07/01(月)14:46:53 ID:ukT/HvmBn()
動かない
他の人のキャラは動いているが、
自分はマウスクリックしても動かない。
Firefox21.0

BrowserQuest
http://browserquest.mozilla.org/
5名無しさん :2013/07/01(月)15:41:57 ID:ukT/HvmBn()
配列でピクセルにアクセス

canvasをバイト単位で修正する方法(ImageDataの使い方) | tech.kayac.com - KAYAC engineers' blog
http://tech.kayac.com/archive/javascript-canvas-imagedata.html
6名無しさん :2013/07/02(火)07:16:37 ID:ZOpfpd2nf
JavaScriptリファレンス(オブジェクト別)
http://www.htmq.com/js/index.shtml
7名無しさん :2013/07/02(火)07:18:20 ID:ZOpfpd2nf
JavaScript逆引きサンプル集 - JavaScriptist
http://javascriptist.net/docs/samples.html
8名無しさん :2013/07/02(火)07:30:53 ID:ZOpfpd2nf
JavaScriptオンラインエディタ - JavaScriptist
http://javascriptist.net/exec/

タイマーのテスト
http://javascriptist.net/exec/?f=window.setinterval&t=ref
9名無しさん :2013/07/02(火)07:42:17 ID:ZOpfpd2nf
JavaScriptでリアルタイムに音を鳴らす方法を3つほど - つまみ食う
http://d.hatena.ne.jp/mohayonao/20110808/1312803835
10名無しさん :2013/07/02(火)07:46:44 ID:ZOpfpd2nf
単純なBeep音がないんだな
11名無しさん :2013/07/02(火)07:56:24 ID:ZOpfpd2nf
HTMLの書き換え用APIはDOMと言う
Document Object Model

DOMを操作 - JavaScriptist
http://javascriptist.net/docs/basic_dom.html
12名無しさん :2013/07/02(火)09:46:30 ID:ZOpfpd2nf
そうか、「ページのソースを表示(V)」ではDOMによる変更は反映されていないんだな
13名無しさん :2013/07/02(火)09:49:20 ID:ZOpfpd2nf

スクリプトを動的に読み込む方法 - JavaScriptプログラミング解説
http://www.crystal-creation.com/web-appli/technical-information/programming/javascript/sample/script.htm
14名無しさん :2013/07/02(火)13:36:36 ID:ZOpfpd2nf
Firefoxのスクラッチパッドってこんなんです

とりあえずJavaScriptを記述して動作を確認したいって時はFirefoxに搭載のスクラッチパッドが断然便利 - YATのBLOG
http://wp.yat-net.com/?p=3648
https://s3-ap-northeast-1.amazonaws.com/yatblogimg/2013/04/scratchpad_02.jpg
https://s3-ap-northeast-1.amazonaws.com/yatblogimg/2013/04/scratchpad_05.jpg
15名無しさん :2013/07/02(火)14:05:28 ID:ZOpfpd2nf
2013年6月25日リリースのFirefox22からClipboardDataがサポートされてる

高速化した「Firefox 22」正式日本語版がダウンロード可能に、第4世代JavaScriptエンジンOdinMonkeyとasm.jsを採用 - GIGAZINE
http://gigazine.net/news/20130625-firefox22/
16名無しさん :2013/07/02(火)14:20:14 ID:ZOpfpd2nf
使い方がさっぱり分からない
clipboardData.setText("abc");
だと
Exception: clipboardData is not defined がでる
17名無しさん :2013/07/02(火)20:19:18 ID:ZOpfpd2nf
画像の左上の点の色でfillRectする方法がわからない

onload = function() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.onload = function() {
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0);
var dat = ctx.createImageData(img.width, img.height);
//ctx.drawImage(img, 0, 0, 10, 10, 0, 0, 10, 10);
//var dat = ctx.createImageData(1, 1);
//var dat = ctx.getImageData(0, 0, 10, 10);
//var dat = ctx.getImageData(0, 0, canvas.width, canvas.height);
var rgb = 'rgb(' + dat.data[0] + ',' + dat.data[1] + ',' + dat.data[2] + ')';
document.title = rgb;
ctx.fillStyle = rgb;
ctx.fillRect(0, 0, canvas.width, canvas.height);
};
img.src="


";
}
18名無しさん :2013/07/02(火)20:26:46 ID:ZOpfpd2nf
Index.htmlがこれ

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>エロゲ(仮)</title>
<script type="text/javascript" src="Main.js"></script>
</head>
<body>
<canvas id="canvas" width=640 height=480></canvas>
</body>
</html>
19名無しさん :2013/07/02(火)20:29:06 ID:ZOpfpd2nf
Main.jsがこれ。 縦横比を変えずに絵を描画

onload = function() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.onload = function() {
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, canvas.width, canvas.height);
var ratio;
if (img.width / canvas.width > img.height / canvas.height)
ratio = canvas.width / img.width
else
ratio = canvas.height / img.height;
if (ratio > 1) ratio = 1;
ctx.drawImage(img, 0, 0, img.width * ratio, img.height * ratio);
};
img.src="


";
}
20名無しさん :2013/07/02(火)22:16:35 ID:ZOpfpd2nf
Firefox22はこのサンプルで左クリックしなくても、マウスカーソルが
入るだけで「左クリック状態です」となる。

Event.isLeftClick - 左クリックが押されているかどうか調べる - prototype.jsリファレンス
http://javascriptist.net/ref_prototype/Event.isLeftClick.html
21名無しさん :2013/07/03(水)00:23:30 ID:8erkdc/wb
1さん すごいな
機能テストスレの画像も1さんなんやろ?
前から写真を載せてる人がいたけど
あれもそういうプログラムでやってるのやろか?
22名無しさん :2013/07/03(水)03:55:06 ID:h6prVVl5y
猫の画像のオリジナルは私じゃないけど、JavaScript貼り付けてるのは私です。
やり方はそうだと思います。
23名無しさん :2013/07/03(水)15:00:24 ID:h6prVVl5y
JavaScriptで、メソッド名が定義されておらず、 function()の前にドルマーク”$”が... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1444158294

jQuery(function() { /*...*/ })
と、
$(function() { /*...*/ })
はjQueryの中では同じ処理になります。
24名無しさん :2013/07/03(水)15:58:35 ID:h6prVVl5y
context.drawImage(img, x, y, 1, 1, 0, 0, 1, 1);

SecurityError: The operation is insecure.
エラーが出る。 回避方法がさっぱり分からない

4.8 Embedded content _ HTML5
http://www.w3.org/TR/html5/embedded-content-0.html#security-with-canvas-elements
2521 :2013/07/03(水)16:15:45 ID:1MmOWo79k
画像貼り付けできんよぉー
どうしたらいいんだろぉ

どうも猫の他にも魚と河合奈保子とニューススレに
画像貼り付けの技をもってる人がいるようだ


これ↓は1さんの投稿なの?  そこにヒントがあるように見えるのだけど
http://open.open2ch.net/test/read.cgi/open2ch/1369417067/322
26名無しさん :2013/07/03(水)16:32:09 ID:h6prVVl5y
それはこんな感じで作ったやつ
function draw() {
var canvas = document.getElementById('sketch');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "white";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
var grad = ctx.createLinearGradient(0, 0, 0, canvas.height);
grad.addColorStop(0, 'rgb(0, 0, 0)');
grad.addColorStop(0.1, 'rgb(255, 0, 0)');
grad.addColorStop(0.2,'rgb(0, 0, 255)');
grad.addColorStop(0.4,'rgb(255, 0, 255)');
grad.addColorStop(0.6,'rgb(0, 255, 0)');
grad.addColorStop(0.8,'rgb(255, 255, 0)');
grad.addColorStop(0.9,'rgb(0, 255, 255)');
grad.addColorStop(1, 'rgb(255, 255, 255)');
ctx.fillStyle = grad;
ctx.rect(canvas.width-30, 0, 30, canvas.height);
ctx.fill();
}
draw();
http://img.open2ch.net/p/tech-1372638049-26.png
2721 :2013/07/03(水)16:42:57 ID:1MmOWo79k
うーむぅー  悩む
28名無しさん :2013/07/03(水)17:14:59 ID:h6prVVl5y
canvas の getImageDataが少しめんどくさい(特にローカルで動かす場合) - 地平線に行く
http://d.hatena.ne.jp/chiheisen/20100815/1281885412
>ローカルにある画像をキャンバスへ張り付けた場合、getImageData が動かなくなります。

http://img.open2ch.net/p/tech-1372638049-28.png
2921 :2013/07/03(水)17:39:12 ID:InqySpODh
>>28 セキュリティなんちゃらで難しそうやね

で・・ワシはputImageDataで行こうかと思ってるのだけど
ローカルファイルをcanvasに表示するにはどうしたらいいかな
30名無しさん :2013/07/03(水)18:06:44 ID:h6prVVl5y
RGBデータをソースに埋め込むとか
3121 :2013/07/03(水)18:16:50 ID:bt82nZBNx
>>30
それはこれを参考にするつもり
http://tech.kayac.com/archive/javascript-canvas-imagedata.html


>>29は質問の仕方を間違えた
まずはローカルでcanvasに表示したい
↓のhtmlでファイル参照したらローカルイメージをローカルのcanvasに表示したい

<!DOCTYPE html>
<html lang="ja">
<meta charset="shift_jis">
<head>
<script type="text/javascript">
<!--

function draw(){
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

}

//-->
</script>
</head>

<body onLoad="draw()">

<h1>画像表示</h1>

<canvas id="canvas" width="300" height="300" style="background-color:yellow;"></canvas>
<input id="upload" type="file" value="filepath">

</body>
</html>
3221 :2013/07/03(水)18:17:49 ID:bt82nZBNx
javascriptの基本から初めてますので
33名無しさん :2013/07/03(水)20:34:43 ID:h6prVVl5y
とりあえず、putImageDataで出来ました

お絵かき機能テストすれ
http://open.open2ch.net/test/read.cgi/open2ch/1369417067/358-363
34名無しさん :2013/07/03(水)21:06:27 ID:h6prVVl5y
スクラッチパッドからはタイマーは動かないのか
var x = 0;
function exec() {
document.title = x++;
}
var timer;
timer = window.setInterval('exec()', 1000);
35名無しさん :2013/07/03(水)22:07:59 ID:h6prVVl5y
スマートフォン比較表
http://www.smph.info/
解像度は720×1,280が多い 9:16

iPad 2,048 × 1,536 4:3
36名無しさん :2013/07/04(木)12:54:02 ID:3BB3bsSyk
引数の数で処理を分ける

JavaScriptの使える小技です。: Javascriptでオーバーロードを実現する
http://javascript-memo.seesaa.net/article/24972384.html

switch (arguments.length) {
case 1: test1(arg1);
case 2: test2(arg1,arg2);
default:
}
37名無しさん :2013/07/06(土)12:14:46 ID:PHQQOH9E4
DOMから始めるJavaScriptモダン・スクリプティング - DOMから始めるJavaScriptモダン・スクリプティング---...:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070626/275913/

DOMから始めるJavaScriptモダン・スクリプティング - 第3回 DOMスクリプティングのことはじめ(1) ~要素(...:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070627/276127/
なるべきidをつけて、document.getElementById でアクセス

DOMから始めるJavaScriptモダン・スクリプティング - 第5回 DOMを使ってHTMLを自由自在に書き換える:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070831/280881/
要素の追加・削除のサンプル
38名無しさん :2013/07/06(土)12:31:48 ID:PHQQOH9E4
第7回 スクリプトを完全に分離しよう ~コンテンツ,プレゼンテーション,ビヘイビア~:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20071001/283380/
IE対応サンプル
window.onloadは一つしか使えない

IEを考慮しなければこれだけでいい
var init = function() { alert('ABC'); };
window.addEventListener("load", init, false);
39名無しさん :2013/07/06(土)12:39:54 ID:PHQQOH9E4
DOMから始めるJavaScriptモダン・スクリプティング - 第8回 スクリプトのパッケージ化 ~使い回しできるス...:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20071105/286427/?ST=develop

オブジェクトによるラッピングで名前の衝突を避ける
40名無しさん :2013/07/06(土)15:05:46 ID:PHQQOH9E4
命名規則

Google JavaScript スタイルガイド - 日本語訳 - JavaScriptのスタイルに関するルール
http://www38.atwiki.jp/aias-jsstyleguide2/pages/15.html
41名無しさん :2013/07/06(土)15:11:51 ID:PHQQOH9E4
jQuery, JavaScript のリファレンス

アルファシス _ alphasis.info -
http://alphasis.info/
42名無しさん :2013/07/06(土)15:22:48 ID:PHQQOH9E4
いくつかあるけどよく分からん

jQueryプラグインの作り方|jQuery Tips|Ajax|PHP & JavaScript Room
http://phpjavascriptroom.com/?t=ajax&p=jquery_plugin
43名無しさん :2013/07/06(土)15:34:40 ID:PHQQOH9E4
ASCII.jp:0日目:jQueryプラグイン作成の基礎知識 (2/2)|【短期集中連載】この冬作ろう!jQueryプラグイン講座
http://ascii.jp/elem/000/000/199/199909/index-2.html

<div id="ascii">ASCII.jp</div>
にアクセスする方法
$("#ascii")

$は単独で変数名や関数名に使える文字
だから、$("#ascii") は 文字列 #ascii を引数に、関数 $ を呼び出しているって意味だ
44名無しさん :2013/07/06(土)16:11:34 ID:PHQQOH9E4
jQueryを使い始めたときに感じる13の疑問 | tech.kayac.com - KAYAC engineers' blog
http://tech.kayac.com/archive/jquery-first-questions.html
45名無しさん :2013/07/06(土)16:19:34 ID:PHQQOH9E4
ちゃんと jQuery.js を読み込ませたページを表示しておかないと、
スクラッチパッドでの実行で
Exception: $ is not defined
エラーが出る
46名無しさん :2013/07/06(土)17:52:56 ID:PHQQOH9E4
JavaScriptのいろいろなコーディングルールをまとめてみた | Web scratch
http://efcl.info/2011/0527/res2764/

JavaScript style guide | MDN
https://developer.mozilla.org/ja/docs/JavaScript_style_guide
47名無しさん :2013/07/07(日)15:48:47 ID:4lJL8oD4F
canvas のタイポグラフィ効果 - HTML5 Rocks
http://www.html5rocks.com/ja/tutorials/canvas/texteffects/#toc-introduction
http://1-ps.googleusercontent.com/x/s.html5rocks-hrd.appspot.com/www.html5rocks.com/ja/tutorials/canvas/texteffects/media/xpastedGraphic.png.pagespeed.ic.J3xXqLmwx8.jpg
48名無しさん :2013/07/07(日)15:52:00 ID:4lJL8oD4F
HTML 5 canvas要素 + Javascriptで作る、動的コンテンツ | yoppa org
http://yoppa.org/taumedia10/2065.html
http://i0.wp.com/lh3.ggpht.com/_S9tCNvdm3tU/TNbRj9dJSTI/AAAAAAAAEjE/4K-0OPR4vac/s400/SafariScreenSnapz004.png
49名無しさん :2013/07/07(日)16:02:32 ID:4lJL8oD4F
jQueryの初歩の分かりやすい説明

jQueryで拡がるWebデザインの可能性 | yoppa org
http://yoppa.org/taumedia10/2181.html
50名無しさん :2013/07/07(日)16:24:23 ID:4lJL8oD4F
jQueryの文法
jQuery Syntax
http://www.w3schools.com/jquery/jquery_syntax.asp

$(this).hide() - hides the current element.
$("p").hide() - hides all <p> elements.
$(".test").hide() - hides all elements with class="test".
$("#test").hide() - hides the element with id="test".

documentが読み込まれた後に実行されるコード
$(function(){
// jQuery methods go here...
});
51名無しさん :2013/07/07(日)16:34:33 ID:4lJL8oD4F
引数を書くべきところに関数の定義を書くんだな

jQuery Event Methods
http://www.w3schools.com/jquery/jquery_events.asp

$("p").click(function(){
// action goes here!!
// 全<p>要素がクリックされたとき
});
52名無しさん :2013/07/07(日)16:50:18 ID:4lJL8oD4F
メソッドを数珠繋ぎで呼び出す

jQuery Chaining
http://www.w3schools.com/jquery/jquery_chaining.asp

$("#p1").css("color","red").slideUp(2000).slideDown(2000);
53名無しさん :2013/07/07(日)17:04:23 ID:4lJL8oD4F
DOM取得
jQuery Get Content and Attributes
http://www.w3schools.com/jquery/jquery_dom_get.asp
$("#id1").text(); タグ無しテキスト
$("#id2").html(); タグ付きのHTML
$("#id3").val(); valueフィールド
$("#id4").attr("href"); 属性

DOM設定
jQuery Set Content and Attributes
http://www.w3schools.com/jquery/jquery_dom_set.asp
$("#id1").text("Hello world!");
$("#id2").html("<b>Hello world!</b>");
$("#id3").val("Dolly Duck");
$("#id4").attr("href","http://www.hoge.com/hoge");

attrの複数設定方法
$("#id5").attr({
"href" : "http://www.w3schools.com/jquery",
"title" : "W3Schools jQuery Tutorial"
});
54名無しさん :2013/07/07(日)17:20:50 ID:4lJL8oD4F
DOM追加
jQuery Add Elements
http://www.w3schools.com/jquery/jquery_dom_add.asp

$("p").append("Some appended text."); 全<p>要素の最後に追加
$("p").prepend("Some prepended text."); 全<p>要素の先頭に追加
リストならリストの先頭、最後になる
$("img").after("Some text after"); 前に追加
$("img").before("Some text before"); 後ろに追加
ちょとよく分からない

DOM削除
jQuery Remove Elements
http://www.w3schools.com/jquery/jquery_dom_remove.asp
$("#div1").remove(); 自分と子を削除
$("#div1").empty(); 子のみ削除
55名無しさん :2013/07/08(月)12:58:19 ID:QFmubFkGT
JavaScript How To
http://www.w3schools.com/js/js_howto.asp
type="text/javascript" はもういらなくなった
<script src="myScript.js"></script> でいい
56名無しさん :2013/07/08(月)13:05:06 ID:QFmubFkGT
JavaScript Variables
http://www.w3schools.com/js/js_variables.asp
var carname;
未初期化の変数には undefined が入ってる
0 や '' や nil が入っているわけではない
57名無しさん :2013/07/08(月)13:09:01 ID:QFmubFkGT
var carname="Volvo";
...
var carname;
...

これでエラーが出ないのか。
しかも、carname の値は "Volvo"だ
58名無しさん :2013/07/08(月)13:18:12 ID:QFmubFkGT
JavaScript Data Types
http://www.w3schools.com/js/js_datatypes.asp
>Variables can be emptied by setting the value to null;
FireFoxでは null を代入したら、 undefined ではなく、nullになっとるが
undefinedで代入できたが
59名無しさん :2013/07/08(月)15:48:08 ID:QFmubFkGT
localStorageはローカル(HDDに保存してあるhtmlファイル)では使えないのかな
60名無しさん :2013/07/08(月)15:59:59 ID:QFmubFkGT
ローカルじゃなくても insecure が出るな。 なんでだろう

この記事は関係ないが
ローカルストレージに簡単な解決策はない | Mozilla Developer Street (modest)
https://dev.mozilla.jp/2012/03/there-is-no-simple-solution-for-local-storage/
61名無しさん :2013/07/08(月)16:06:37 ID:QFmubFkGT
あわかった、cookieを有効にしないとダメだ
62名無しさん :2013/07/08(月)16:14:32 ID:QFmubFkGT
ん~でもローカルにあるhtmlでは無理みたいだ
127.0.0.1とかじゃ保存されない
63名無しさん :2013/07/08(月)18:07:09 ID:QFmubFkGT
一行入魂 jQueryでselect操作まとめ
http://aoyagikouhei.blog8.fc2.com/blog-entry-106.html

■選択された文字列の取得
jQuery('#target option:selected').text();
64名無しさん :2013/07/08(月)18:24:30 ID:QFmubFkGT
elementで操作できる

context - jQuery 日本語リファレンス
http://semooh.jp/jquery/api/core/context/
jQueryオブジェクトからelementに変換

var i = $(this).context.selectedIndex;
$(this).context.options[i].text で取得
http://img.open2ch.net/p/tech-1372638049-64.png
65名無しさん :2013/07/11(木)18:18:17 ID:ebTaCbkah
厳格なエラー

Strict モード - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Strict_mode

'use strict';
66名無しさん :2013/07/11(木)19:13:31 ID:ebTaCbkah
なんでこれで 5 が返ってこないんだ

var map = {
data: '12345',
width: function() { return map.data.length; }
}

document.title = map.width;
67名無しさん :2013/07/11(木)19:17:06 ID:ebTaCbkah
こっちはちゃんと5が返ってくる
document.title = map.data.length;
68名無しさん :2013/07/11(木)19:52:40 ID:ebTaCbkah
あ、わかった map.width() ってやらないとダメなんだ
69名無しさん :2013/07/14(日)17:19:58 ID:ziiBdlcxR
ASCII.jp:無料で使えるHTML5 JavaScriptゲームエンジンまとめ
http://ascii.jp/elem/000/000/706/706640/
70名無しさん :2013/07/15(月)11:23:38 ID:/8N3DGFrG
jsdo.it - Share JavaScript, HTML5 and CSS
http://jsdo.it/
71名無しさん :2013/07/15(月)12:53:37 ID:/8N3DGFrG
canvasに赤色"rgb(255,0,0,1)"円を塗りつぶすと、アンチエイリアスがかかるが、
canvasのrgbの値は 255,0,0 か 0,0,0のみでaの値が変化する。
72名無しさん :2013/07/16(火)18:28:39 ID:LFv3R+l8b
jQuery のプラグインを作成する : ブログの新着記事を表示 - Goodpic
http://www.goodpic.com/mt/archives2/2007/11/jquery.html

$.fn.sketch = function() { の意味
sketchがプラグインの名称かつ関数名

read.cgi.jsで
var sketch = $('#sketch').sketch();
と呼び出している
73名無しさん :2013/07/18(木)12:28:09 ID:Iv1hVONEI
まいった。 sleepに相当するものが無いらしい。

// 12534
function D(s) { document.title = document.title + s; }
window.onload = function(){
var c = document.createElement('canvas');
document.body.appendChild(c);
var img = new Image();
document.title = '';
D('1');
img.src = 'http://upload.wikimedia.org/wikipedia/commons/3/3c/Guycat.jpg';
D('2');
img.onload = function(){
D('3');
c.getContext('2d').drawImage(img, 0, 0);
D('4');
}
D('5');
};
74名無しさん :2013/07/18(木)12:48:12 ID:Iv1hVONEI
画像の読み込みが完了する前に、どんどん先のコードが実行されてしまう
75名無しさん :2013/07/18(木)14:07:16 ID:Iv1hVONEI
画像が読み込まれるまで待つコードを書くより、
画像が読み込まれていなくても問題の出ないコードを書けばいいのか
76名無しさん :2013/07/19(金)07:23:45 ID:sUaB8V8KY
いったん base64に変換すればセキュリティーエラーを回避できるかもと思ったが、
toDataURL()で出る。 まあ、そうだよね。

img.src = url1;
ctx.drawImage(img, 0, 0);
var dat1 = canvas.toDataURL();
img.src = dat1;
ctx.drawImage(img, 0, 0);
77名無しさん :2013/07/20(土)16:32:25 ID:r5bCI0hBf
連載:Ajax時代のJavaScriptプログラミング再入門:第4回 JavaScriptでオブジェクト指向プログラミング (1/4) - @IT
http://www.atmarkit.co.jp/ait/articles/0709/25/news148.html

関数を new で呼び出せばコンストラクタとして関数を呼んだ事になる。
prototype はメンバ関数ってこと。
78名無しさん :2013/07/20(土)17:09:03 ID:r5bCI0hBf
ここ大事だな。
配列、オブジェクト、関数が参照型

連載:Ajax時代のJavaScriptプログラミング再入門:第3回 変数の宣言とスコープ (1/4) - @IT
http://www.atmarkit.co.jp/ait/articles/0708/21/news116.html

var x = [0, 1, 2]; // 配列
var y = x; [D]
x[0] = 10; // 配列の先頭の要素を書き換え [E]
window.alert(y); // 10,1,2(参照元の値を表示) [F]
79名無しさん :2013/07/27(土)16:22:09 ID:YVfgVJWFX
JavaScriptでびっくりしたのは「連想配列とオブジェクト?一緒でいいじゃん」って考え方だな。
フィールドに、値としてメソッド入れてあったらメソッドで。

もうひとつびっくりしたのは 配列 == 連想配列 かと言うとそれも微妙に違ってて
配列は添字を連続した数値と仮定する「連想配列を拡張した」型ってのが。
80名無しさん :2013/11/05(火)12:32:50 ID:YB4fr8pHv
Dateオブジェクト (日付と時刻) - JavaScriptプログラミング解説
http://www.crystal-creation.com/web-appli/technical-information/programming/javascript/grammar/object/date.htm

toLocaleString()
chrome4は Thu May 01 2008 02:00:00 GMT+0900 (Japan Standard Time)

あと、
var d = new Date('2008年5月1日 2:00:00'); // Invalid Date
81名無しさん :2013/11/06(水)06:12:30 ID:VjXd8KQI+
new Date('2008/05/01 02:00:00') は解釈できるのに、

Dateオブジェクトから、'2008/05/01 02:00:00'を一発で得られる関数が用意されてない。
82名無しさん :2013/11/11(月)18:14:27 ID:yfpI/pGF+
全角半角も大文字小文字も全て区別される

var han_a = 'a';
var han_A = 'A';
var zen_a = 'a';
var zen_A = 'A';
console.log("han_a==zen_A " + (han_a==zen_A).toString()); // false
console.log("han_a==zen_a " + (han_a==zen_a).toString()); // false
console.log("han_a==han_A " + (han_a==han_A).toString()); // false
console.log("zen_a==zen_A " + (zen_a==zen_A).toString()); // false
console.log("han_a.localeCompare(zen_A) " + han_a.localeCompare(zen_A).toString()); //-1
console.log("han_a.localeCompare(zen_a) " + han_a.localeCompare(zen_a).toString()); //-1
console.log("han_a.localeCompare(han_A) " + han_a.localeCompare(han_A).toString()); //-1
console.log("zen_a.localeCompare(zen_A) " + zen_a.localeCompare(zen_A).toString()); //-1
83名無しさん :2013/11/12(火)08:37:08 ID:023e3UWtn
短いコードがいっぱい

JavascriptTips - jslibs - JavaScript language advanced tips and tricks - standalone JavaScript development runtime environment with general purpose native libraries - Google Project Hosting
http://code.google.com/p/jslibs/wiki/JavascriptTips
84名無しさん :2013/11/12(火)08:50:00 ID:023e3UWtn
こんな書き方ができるのか
function f(x) x * x;
document.title = f(3); // 9
85名無しさん :2013/11/12(火)09:18:47 ID:023e3UWtn
function f() {
return [1, 2];
}

var [a, b] = f();

Print( a + ' ' + b ); // prints: 1 2
86名無しさん :2013/11/12(火)09:23:34 ID:023e3UWtn
入れ替え
var a = 1;
var b = 2;
[a,b] = [b,a];
87名無しさん :2013/11/12(火)09:50:44 ID:023e3UWtn
なじみない表記だけど覚えたほうがいいのだろうか

for each ( var i in [3,23,4] )
Print(i)

Prints:
3
23
4
88名無しさん :2013/11/12(火)09:54:15 ID:023e3UWtn
配列には決して使うなと書いてあるが、詳細はリンク切れ

for each...in - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for_each...in
89名無しさん :2013/11/12(火)10:18:15 ID:023e3UWtn
for each in も for in もプロパティー列挙用だ

for...in - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in

プロパティー名と値を列挙
function show_props(obj, objName) {
  var result = "";
  for (var i in obj) {
   result += objName + "." + i + " = " + obj[i] + "\n";
  }
  return result;
}
90名無しさん :2013/11/13(水)14:06:42 ID:XSgCGhV1I
arguments - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments

arguments.callee
現在実行している関数の関数本体を示す。
arguments.caller
現在実行している関数を呼び出した関数の名前を示す。

var args = Array.prototype.slice.call(arguments);
で配列化
91名無しさん :2013/11/13(水)14:52:33 ID:XSgCGhV1I
callerはもう使えない
92名無しさん :2013/11/26(火)16:57:23 ID:nNJyae6Nv
if ([]) console.log('[] is true'); // true
if ([].length) console.log('[].length is true'); // false
if (0) console.log('0 is true'); // false
93名無しさん :2013/11/29(金)07:02:46 ID:NLRJVGdZc
要素が一つだけだと連結できないから、0なのかな

console.log(Array(0).join('x').length); // 0
console.log(Array(1).join('x').length); // 0
console.log(Array(2).join('x').length); // 1
console.log(Array(3).join('x').length); // 2
94名無しさん :2014/03/06(木)17:51:55 ID:Tp4ilRae8
配列の列挙はfor-ofを使う
95名無しさん :2014/03/07(金)10:31:06 ID:K6Heycodl
forEachと同じじゃね?

for...of - JavaScript リダイレクト 1 | MDN
https://developer.mozilla.org/ja/docs/JavaScript/Reference/%E6%96%87/for...of
96名無しさん :2014/03/07(金)12:53:20 ID:m4kvQIs6C
違う
forEachはArrayクラスのメソッド
for-ofはiterableな値をイテレートする構文
97名無しさん :2014/03/08(土)00:58:48 ID:EVHnOIYBQ
質問相談雑談なんでも来い
HTML5プロフェッショナルの俺が答えてやる
98名無しさん :2014/03/08(土)06:40:52 ID:iodK1wCah
コールバック関数内から引数 s にアクセスしても大丈夫ですか?

function test(s) {
 setTimeout(function(){
  document.title = s;
 }, 1000);
 //s = "TEST"; コレを入れるとタイトルが TEST になる
}

test((new Date()).toString());
99名無しさん :2014/03/08(土)08:45:22 ID:iodK1wCah
EST になる
sがいつまで有効なのか分からない

function test(s) {
 setTimeout(function(){
  let ss = s.slice(1);
  document.title = ss;
 }, 1000);
 s = "TEST"; //コレを入れるとタイトルが TEST になる
}
test((new Date()).toString());
100名無しさん :2014/03/08(土)08:47:49 ID:iodK1wCah
at Mar 08 2014 08:46:33 GMT+0900 になる

function test(s) {
 let ss = s.slice(1);
 setTimeout(function(){
  document.title = ss;
 }, 1000);
}
test((new Date()).toString());
101名無しさん :2014/03/08(土)12:58:32 ID:zGe0Xqp9v
それのコードでコールバックってsetTimeoutに渡す関数のことだぞ
だから正しくはコールバック内から外のスコープの変数にアクセスする所謂クロージャの形

ここでそのコードが期待通りに動くかは実行順序に依存する
setTimeoutは必ず非同期なので問題ない
同期のコールバック呼び出し関数だと期待通りに動かない
102名無しさん :2014/03/08(土)14:03:07 ID:iodK1wCah
setTimeout(function(){
  document.title = s;
 }, 1000);

で、function() { document.title = s; }
がコールバック関数ですよね?
103名無しさん :2014/03/08(土)14:43:30 ID:d8EY0Zd4B
せやな
104名無しさん :2014/03/12(水)20:07:35 ID:CMhWAlQta
JavaScriptでIPアドレスを取得する決定版のスクリプト作れないかなぁ
WebRTCでローカルIPアドレスなら超簡単に取得できるけど
意図的にSTANサーバ叩かせて確実にグローバルIPを得るには
偽装Candidateを用意してAPIを騙す必要があるのは分かるけど
105名無しさん :2014/03/14(金)16:44:20 ID:WstgFnyq3
どういう条件、どういうタイミングでSTANサーバにアクセスするんだろうか?
106名無しさん :2014/03/16(日)07:19:47 ID:T8eyHtydN
気になる!夢がある!ECMAScript6についてガッツリ調べてみた。 (1) _ ES6の基礎知識/関数のアロー記法/let/const/分割代入など | OpenWeb
http://openweb.co.jp/2013/01/18/%E6%B0%97%E3%81%AB%E3%81%AA%E3%82%8B%EF%BC%81%E5%A4%A2%E3%81%8C%E3%81%82%E3%82%8B%EF%BC%81javascript-next-ecmascript6-1-es6%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E9%96%A2%E6%95%B0/
var square = function(x) {
return x * x;
};

var square = x => x * x;

あれ? 別の意味にならないか? 優先順位は * >= = の順

演算子の優先順位 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table

アロー記法は分かりにくいからやめて欲しいな・・・
107名無しさん :2014/03/16(日)15:45:48 ID:s35T2m78C
=>と>=は違う

分かりにくいこと無いよ
ary.map(function (x) { return x * x })

ary.map(x => x * x)
のように本質的にアローのほうが分かりやすい

ただ見慣れてないだけで一度慣れると手放せないものになる
thisバインドも優秀
108名無しさん :2014/03/17(月)15:45:08 ID:Hwbx0J1ZL
アロー記法くらいで分かりにくい言ってたら
ES7のBind/Relationships構文見たら泡吹くんじゃないか?
http://esdiscuss.org/topic/merging-bind-syntax-with-relationships
109名無しさん :2014/03/17(月)17:44:11 ID:GOYgBZzkZ
面白い(白目)

・Bind

v = a::b()
//-> v = b.call(a)

v = ::a.b
//-> v = a.b.bind(a.b)


・Relationships

a::b = v
//-> b[@@referenceSet](a, v)

v = a::b
//-> v = b[@@referenceGet](a)
110名無しさん :2014/03/18(火)16:05:14 ID:q8vWIXxLM
ES6のRestパラメータってなんでその後に続けて指定できないんだろう

function after(...jobs, callback) {
Promise.all(jobs).then(callback)
}

foo(job1, job2, job3, callback)

みたいに出来た方が便利だと思うが
111名無しさん :2014/03/19(水)17:17:50 ID:peNEMlYwk
誰も居ない
112名無しさん :2014/03/19(水)19:26:48 ID:PHiFZydDu
いるよ
113名無しさん :2014/03/20(木)18:40:12 ID:17PjFYMTv
ラムダ式っていうのか

C#ラムダ式 基礎文法最速マスター - @IT
http://www.atmarkit.co.jp/fdotnet/rapidmaster/rapidmaster_01/rapidmaster_01.html
() => 右辺 // パラメータがない場合
param => 右辺 // パラメータが1つの場合
(param1, param2) => 右辺 // パラメータが2つ以上の場合
ラムダ式の基本構文
114名無しさん :2014/03/20(木)19:43:53 ID:CQBi3Dkva
JSではラムダ式とは言われないと思う
ラムダ式って要は関数式で (function () {}) がもう立派なラムダ式

その記法は
アロー関数、アローファンクションと呼ばれる
115名無しさん :2014/03/25(火)06:54:42 ID:Ab2gvW7uc
おっ
116名無しさん :2014/03/27(木)09:06:17 ID:Tqe56BRZo
Chrome 35(もう数日でリリース)からES.nextの機能が沢山有効になるみたいだ
ES6 Promise
ES6 WeakMap
ES6 WeakSet
ES7 Object.observe

この感じからするとChrome 36(1ヶ月半後)ではNumber、String、Mathの拡張辺りは期待できるな
117名無しさん :2014/03/29(土)21:22:12 ID:i8u4LttCh
^^
118名無しさん :2014/03/30(日)21:32:03 ID:da2uU0hrE
誰も居ない
119名無しさん :2014/03/31(月)22:42:04 ID:LZUXPzFdl
いるよ
120名無しさん :2014/03/31(月)23:59:25 ID:d0Y1UAnJW
にゃーん
121名無しさん :2014/04/03(木)18:19:56 ID:t2Lq4n0EK
みゃーん
122名無しさん :2014/04/05(土)12:52:38 ID:fCMLE3R7F
あひゃあ
123名無しさん :2014/04/05(土)22:28:52 ID:1Tv50Fzwk
デザインで参考になるサイトある?
124名無しさん :2014/04/06(日)02:29:32 ID:v8GXZ3FPM
ない
125名無しさん :2014/04/07(月)08:24:34 ID:zuapdDcdB
ふへへ
126名無しさん :2014/04/07(月)16:42:40 ID:k8p5ylHTe
>>123
HTMLデザインテンプレート
WordPress
127名無しさん :2014/04/09(水)20:23:49 ID:H6Pao5jt6
誰かいろよ
128名無しさん :2014/04/09(水)20:25:04 ID:qv4UeDIOh
いるよ
129名無しさん :2014/04/10(木)12:32:31 ID:Hc96zmuRf
JavaScriptとかけて、年端もいかない女の子と解きます。
130名無しさん :2014/04/10(木)13:23:26 ID:Hc96zmuRf
open2chログ表示機能追加ブックマークレット
javascript:clog=komediv.appendChild(document.createElement('textarea'));_sC=showComment;showComment=function(c){clog.value=c+'\n'+clog.value;_sC(c)};0
131名無しさん :2014/04/10(木)14:17:08 ID:Nj44FxtyS
open2ch機能追加ブックマークレット

ログ表示
javascript:(function(){var _sC=showComment;clog=komediv.appendChild(document.createElement('textarea'));showComment=function(c){clog.value=c+'\n'+clog.value;_sC(c)}})()

棒読み
javascript:(function(){var _sC=showComment;showComment=function(c){_sC(c);var ssu=new SpeechSynthesisUtterance(c);ssu.lang='ja-JP';speechSynthesis.speak(ssu)}})()
132名無しさん :2014/04/10(木)15:01:28 ID:FG40Fm596
> appendChild

・・犯罪の匂い
133名無しさん :2014/04/11(金)22:14:27 ID:hNk5VtNbk
棒読みカット
javascript:speechSynthesis.cancel();0

通知+棒読み
javascript:(function(){addEventListener('click',Notification.requestPermission.bind(Notification,function(){}));var _sC=showComment;showComment=function(c){_sC(c);var m=c.match(/http:\/\/.+imgur.com\/.+/);if(m)c='画像が投稿されました。';var ssu=new SpeechSynthesisUtterance(c);ssu.lang='ja-JP';ssu.onstart=function(){var nc=new Notification('open2ch chat',m?({icon:c}):({body:c}));ssu.onend=nc.close.bind(nc)};speechSynthesis.speak(ssu);}})()
134名無しさん :2014/04/11(金)22:17:47 ID:hNk5VtNbk
訂正
javascript:(function(){addEventListener('click',Notification.requestPermission.bind(Notification,function(){}));var _sC=showComment;showComment=function(c){_sC(c);var m=c.match(/http:\/\/.+imgur.com\/.+/);if(m)c='画像が投稿されました。';var ssu=new SpeechSynthesisUtterance(c);ssu.lang='ja-JP';ssu.onstart=function(){var nc=new Notification('open2ch chat',m?({icon:m[0]}):({body:c}));ssu.onend=nc.close.bind(nc)};speechSynthesis.speak(ssu);}})()
135名無しさん :2014/04/15(火)11:12:26 ID:6BBmYwIG9
誰もいない
136名無しさん :2014/04/16(水)08:01:48 ID:cBcWSwFYA
いるよ
137名無しさん :2014/04/16(水)10:54:58 ID:oQLI5ykuW
誰かいる?
138名無しさん :2014/04/16(水)15:39:22 ID:uDEsI5vn6
いるよ
139名無しさん :2014/04/17(木)13:50:02 ID:6yupwbgHr
よかった^^
140名無しさん :2014/04/19(土)20:10:58 ID:nhHvN58Cv
iframeによる画面二分割って大変なの?
たったコレだけのことがiframeでは出来ない

<frameset cols="90,*">
<frame src="open2chmenu.html" frameBorder=0 marginWidth=0 marginHeight=0></frame>
<frame name="headline" src="http://open2ch.net/headline.cgi?mode=all&o=updated&n=50" frameBorder=1></frame>
</frameset>

<!--
<iframe src="open2chmenu.html" frameBorder=0 marginWidth=0 marginHeight=0 width=90 height=100% >
</iframe>
<iframe name="headline" src="http://open2ch.net/headline.cgi?mode=all&o=updated&n=50"
width=* height=100% frameBorder=0 marginWidth=0 marginHeight=0 ></iframe>
-->
141名無しさん :2014/04/21(月)09:57:04 ID:SSfiWW4t8
スタイルはスタイルシートで指定するのよ
142名無しさん :2014/04/21(月)14:47:54 ID:7jYB2Qxg7
open2ch
komeバグ
ksocket.emit('send',new ArrayBuffer(1))
143名無しさん :2014/04/21(月)16:25:50 ID:7sUlGxg1f
kome拡張ブックマークレット
・お絵かきを投稿できるようにする

javascript:var kfile=$('#kfile');kfile.trigger('uploading');$.ajax({dataType:'json',headers:{Authorization:'Client-ID ed3688de8608b9d'},url:'https://api.imgur.com/3/image.json',type:'POST',data:{image:document.querySelector('#sketch').toDataURL('image/png').split("base64,")[1]},success:function(res){kfile.trigger('uploadComplete',res.data.link)}});0;

1.お絵かきモードで絵を描く
2.ブックマークレットクリックで投稿
http://img.open2ch.net/p/tech-1372638049-143.png
144名無しさん :2014/04/21(月)16:28:30 ID:7sUlGxg1f
ブックマークレットの登録仕方

1.ブックマークを新しく作る
2.URLとしてブックマークレットを登録する
3.クリックで実行
145名無しさん :2014/04/21(月)16:40:56 ID:xskC6SUTV

http://img.open2ch.net/p/tech-1372638049-145.png
146名無しさん :2014/04/21(月)17:34:52 ID:7sUlGxg1f
kome拡張ブックマークレット
・NGワードを指定できるようにする

javascript:(function(){if(!window._CNG){var _sC=showComment;showComment=function(c,u,e){if(_CNG(c))insertLog('###NG###',u);else _sC(c,u,e)};window._CNG=function(c){return localStorage.CNG.split('###NG###').some(function(t){return t&&c.match(t)})}}if(!localStorage.CNG)localStorage.CNG='';var d=prompt('NGワードを半角スラッシュ『\/』で区切って登録して下さい\n(半角スラッシュ自体の登録は『\/\/』と2回重ねて下さい)',localStorage.CNG.replace(/\//g,'\/\/').replace(/###NG###/g,'\/'))||'';localStorage.CNG=d.replace(/\/\//g,'###OK###').replace(/\//g,'###NG###').replace(/###OK###/g,'\/')})();0

1.ブックマークレットをクリックして支持に従う
147名無しさん :2014/04/21(月)23:11:57 ID:xskC6SUTV
kome拡張ブックマークレット
でウインドウサイズを大きくするなんて言うことはできますか?
できるなら教えてください。小さいと不便です。
148名無しさん :2014/04/22(火)00:22:57 ID:uX5nyAIUq
ウインドウサイズってなんぞ
149名無しさん :2014/04/22(火)04:32:52 ID:dH1xEVBbf
横幅のことじゃね?
150名無しさん :2014/04/22(火)11:49:00 ID:9w6de6Y4G
どこの横幅よ
151名無しさん :2014/04/22(火)12:42:52 ID:2at2UsZWk
ログが折り返せば十分な気がする
152名無しさん :2014/04/22(火)14:22:09 ID:Wom9laqat
kome拡張ブックマークレット
・画像表示位置を上げる

javascript:(function(){var _sC=showComment;showComment=function(c,u){var ih=window.innerHeight;if(isImgur(c.replace(/^(slow|fast)/,"").replace(/^\s+/,"")))window.innerHeight=100;_sC(c,u);window.innerHeight=ih}})();0;

1.ブックマークレットをクリックする
153名無しさん :2014/04/22(火)14:40:58 ID:Wom9laqat
kome拡張ブックマークレット
・読み上げ音量を調整する

javascript:(function(){var v=prompt('読み上げ音量設定(0-100)',100)/100||0;window.talk=function(t){var a=new Audio('http://voice.open2ch.net:8080/text2voice.cgi?q='+encodeURIComponent(t));a.load();a.volume=v;a.play();a.onended=function(){a.remove()}}})();0;

1.ブックマークレットをクリックして支持に従う
154名無しさん :2014/04/23(水)21:29:05 ID:L8HmCTuv1
Date.now() を使え、[] を使えって話

javascriptで実行時間を計りたいとき,Date.now() と new Date()はどちらを使うべき? - プログラミングのメモ
http://konbu13.hatenablog.com/entry/2014/02/08/113447

javascriptで配列宣言は`new Array`がいいのか,`[ ]`が速いのか確かめた - プログラミングのメモ
http://konbu13.hatenablog.com/entry/2014/02/12/220430
155名無しさん :2014/04/23(水)21:29:38 ID:cCihVHjVe
そりゃそうだろ
156名無しさん :2014/04/25(金)18:17:47 ID:FU1H3xdRG
あ、でも、toLocaleTimeString を求めるには、 new Date() がいる
(new Date()).toLocaleTimeString()
157名無しさん :2014/04/25(金)18:19:53 ID:a3nEc8IJb
む、違う

DOM_VK_RETURN = 13
DOM_VK_ENTER = 14
158名無しさん :2014/04/25(金)19:24:17 ID:3ir4PHk3h
>>157
DOM_VK_ENTERは使われてなくてFx30であぼーんされたろいいかげんにしろ
http://www.d-toybox.com/studio/weblog/show.php?mode=monthly;year=2014;month=02
159名無しさん :2014/04/26(土)03:55:06 ID:hHleHInyX
DOM_VK_ENTER を見つけて、これがリターンキーだろうと思って
onkeydown イベントで待ってたんだけど、発生しなくて調べた
160名無しさん :2014/04/27(日)04:46:04 ID:jxa9A0gf0
そもそもDOM_VK_*自体Fxにしかない
161名無しさん :2014/04/28(月)15:44:47 ID:8b92nudTt
ES6ではネイティブクラスの多重継承が可能になった

const createMultiInheritance = (...args) => Object.setPrototypeOf(args.reduce((obj, [Class, ...params]) => Class.apply(Class[Symbol.create].call(obj) ,params), {}), args.reduce((proto, [Class, ...params]) => Object.assign(proto, Class.prototype), {}))

let adr = createMultiInheritance([Array,1,2,3] ,[Date,2014,6] , [RegExp,'abc'])

adr[2] //3
adr.getFullYear() //2014
adr.exec('abc') //["abc"]
162おーぷん@名無しさん :2014/04/29(火)20:49:48 ID:nqLApvSrR
あが
163名無しさん@おーぷん :2014/04/30(水)12:57:38 ID:wcgGARjR2
JavaScriptの話しようぜ
164名無しさん@おーぷん :2014/04/30(水)19:58:26 ID:dbD8RjQGw
ES6でのclassって難しそうだな
165名無しさん@おーぷん :2014/05/01(木)08:50:59 ID:yvJTaalMK
fa
166名無しさん@おーぷん :2014/05/05(月)08:50:20 ID:2gh3zLLCU
^^
167名無しさん@おーぷん :2014/05/07(水)18:02:36 ID:I1yPwT4nG
誰かいる?
168名無しさん@おーぷん :2014/05/08(木)05:05:26 ID:CaHHJJogo
l
169名無しさん@おーぷん :2014/05/08(木)11:04:38 ID:E66CZWIBh
ho
170名無しさん@おーぷん :2014/05/09(金)16:16:12 ID:eAj183G2V
hoshu
171名無しさん@おーぷん :2014/05/12(月)15:28:05 ID:enRyOsczr
ES7のvalue objectsでthisの種類が増えることになるかも?

value class pixel {
 suffix 'px';
 typeof 'CSS:pixel';
 constructor(value) {
  this.value = value; // 新種のthis
 }
 +() => pixel(this.value);
 -() => pixel(-this.value);
 pixel + pixel (l, r) => pixel(l.value + r.value);
 pixel - pixel (l, r) => pixel(l.value - r.value);
 pixel * pixel (l, r) => pixel(l.value * r.value);
 pixel / pixel (l, r) => pixel(l.value / r.value);
 pixel + number (l, r) => pixel(l.value + r);
 ......
 ......
 ......
}

let x = 10px + 2px; // 12px
172名無しさん@おーぷん :2014/05/13(火)11:34:28 ID:t20SsBu1h
私 this 使わない
173名無しさん@おーぷん :2014/05/13(火)14:12:50 ID:W35udcYoC
thisを使わずにオブジェクト指向できんの?
174名無しさん@おーぷん :2014/05/13(火)15:35:09 ID:t20SsBu1h
メソッド呼ぶとき、毎回オブジェクト渡している
175名無しさん@おーぷん :2014/05/13(火)20:09:09 ID:Jf6vMIMLw
それだと手続き型になるね
176名無しさん@おーぷん :2014/05/14(水)12:35:58 ID:9tZc7xXZf
ES6からプライベートプロパティの導入が容易になったけど皆使うん?
177名無しさん@おーぷん :2014/05/15(木)12:42:33 ID:wYHQ08Zxk
u,u-
178名無しさん@おーぷん :2014/05/15(木)18:12:09 ID:Gq6thrdt4
>>176こんな感じか

const _ = (map => base => {
let priv = map.get(base)
if (!priv) map.set(base, priv = {__proto__: null})
return priv
})(new WeakMap);


class Person {
 constructor(name) { _(this).name = name }
 getName() { return _(this).name }
}


takeshi = new Person("Takeshi")
takeshi.name // undefined
takeshi.getName() // "Takeshi"
179名無しさん@おーぷん :2014/05/15(木)18:17:49 ID:Gq6thrdt4
問題は


_(this).foo = bar


ってのがちょっと見にくいってことか
どうしたら最も見やすくなるんだろう?


$(this).foo = bar

__(this).foo = bar

priv(this).foo = bar


いろいろ考えたがこれがベストだった


㊙(this).foo = bar
180名無しさん@おーぷん :2014/05/16(金)05:00:53 ID:9uWa2W0a1
人少ないなぁ
181名無しさん@おーぷん :2014/05/16(金)19:43:28 ID:RqVQHnprH
いるよ
182名無しさん@おーぷん :2014/05/17(土)14:53:34 ID:ZFVKSj4Ql
おるかー?
183名無しさん@おーぷん :2014/05/17(土)14:53:57 ID:1OIkJHpY6
iru
184名無しさん@おーぷん :2014/05/17(土)14:54:20 ID:ZFVKSj4Ql
話そうぜ^^
185名無しさん@おーぷん :2014/05/18(日)18:20:13 ID:CRp5E9kb1
ES7で議論されてるこの演算子欲しい
obj = obj.x

obj .= x

これがあれば
node .= parentNode
とかできるし、応用として

o = {a:1}

o .= {b:2}

o //{a:1,b:2}

みたいなmixinが可能
186名無しさん@おーぷん :2014/05/20(火)15:45:57 ID:ecO5Sco6Z
とうとうこの話題が来た
お前らも加勢しろ
http://esdiscuss.org/topic/the-existential-operator
187名無しさん@おーぷん :2014/05/21(水)12:11:01 ID:nDPmALTVb
ここってNode.jsの話題もOK?
188名無しさん@おーぷん :2014/05/21(水)17:40:34 ID:nDPmALTVb
だれもいない
189名無しさん@おーぷん :2014/05/22(木)22:13:55 ID:lRbxEZNzV
V8は着々とイテレータが入る準備が進んでるな
190名無しさん@おーぷん :2014/05/23(金)14:25:14 ID:x6sCXMnQe
複数のcanvasに画像表示させたいんですけどやり方がわかりません
途中までやったので分かる方いたら教えて下さい

html
<canvas id="test"></canvas>
<script type="text/javascript">
<!--
onload = function(){
draw("test","http://xxx.jpg");
};
<canvas id="test2"></canvas>
<script type="text/javascript">
<!--
onload = function(){
draw("test2","http://xxx.jpg");
};

js
function draw(id,url) {
var canvas = document.getElementById(id);
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = url;
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
}

因みにこれだと<canvas id='test2'></canvas>しか表示できません
191名無しさん@おーぷん :2014/05/23(金)14:50:38 ID:LK1tRQmtI
>>185
イラナイ。パーサーが複雑になったり最適化が遅くなるだけだから。
それで、メリットのある例自体がすごく少ない。本当にイラナイ機能
perlのネコ演算子ぐらい不毛
192名無しさん@おーぷん :2014/05/23(金)16:24:41 ID:lyovgwBix
>>190
重なってる
193名無しさん@おーぷん :2014/05/23(金)16:44:24 ID:lyovgwBix
ごめん、ちゃんと二つ表示されたよ

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_jis">
<script>

onload = function(){
 draw("test","http://img.open2ch.net/p/gameswf-1400826462-462.png");
 draw("test2","http://img.open2ch.net/p/gameswf-1400826462-462.png");
}
function draw(id,url) {
 var canvas = document.getElementById(id);
 var ctx = canvas.getContext('2d');
 var img = new Image();
 img.src = url;
 img.onload = function() {
  ctx.drawImage(img, 0, 0);
 }
}
</script>
</head>
<body>
<canvas id="test"></canvas>
<canvas id="test2"></canvas>
</body>
</html>
194名無しさん@おーぷん :2014/05/23(金)16:46:57 ID:lyovgwBix
画像をお絵かきヘッドラインから適当に持ってきたら・・・

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_jis">
<script>

onload = function(){
 draw("test","


");
 draw("test2","


");
}
function draw(id,url) {
 var canvas = document.getElementById(id);
 var ctx = canvas.getContext('2d');
 var img = new Image();
 img.src = url;
 img.onload = function() {
  ctx.drawImage(img, 0, 0);
 }
}
</script>
</head>
<body>
<canvas id="test"></canvas>
<canvas id="test2"></canvas>
</body>
</html>
195名無しさん@おーぷん :2014/05/23(金)17:00:19 ID:x6sCXMnQe
>>194
すません、そのやり方だと表示できるのは分かるんですけど<canvas>に続けてjavascriptで呼び出したいんです
できたらこんな感じで続けて呼び出す方法分かりませんか

<canvas id="test1"></canvas>
<script>
onload = function(){
draw("test1","http://xxx.jpg");
</scritp>

<canvas id="test2"></canvas>
<script>
onload = function(){
draw("test2","http://yyy.jpg");
</scritp>

<canvas id="test3"></canvas>
<script>
onload = function(){
draw("test3","http://zzz.jpg");
</scritp>

~以下繰り返し~
196名無しさん@おーぷん :2014/05/23(金)17:46:03 ID:x6sCXMnQe
>>195

<canvas id="test1"></canvas>
<script>
onload = function(){
draw("test1","http://xxx.jpg");
}
</scritp>

<canvas id="test2"></canvas>
<script>
onload = function(){
draw("test2","http://yyy.jpg");
}
</scritp>

<canvas id="test3"></canvas>
<script>
onload = function(){
draw("test3","http://zzz.jpg");
}
</scritp>

~以下繰り返し~
197名無しさん@おーぷん :2014/05/23(金)18:27:00 ID:x6sCXMnQe
>>194
自己解決出来ました
ありがとうございます
198名無しさん@おーぷん :2014/05/23(金)21:06:31 ID:4K5EzZvro
>>191
パーサの複雑化や最適化の妨げはないいんじゃない?
浮動小数点表記とと衝突しないし
例えば同じく議論されてる「?.」演算子なんかは三項演算子上の浮動小数と衝突するからコストが要るけど。

あとmixinはすごく重要だと思う。
今までもライブラリによって数多くサポートされてきたし、ES6ではメソッドも入ったけどまだまだ機能が不足してる。
例えばWEc型プロパティの簡易宣言とか

Klass .= { #[@@create](C) {~~~} }

現状ではObject.definePropertiesを使ってグダグダ書くしか無いし、関数にしても直感的にならない。
プロトタイプベースのスクリプト言語なんだし、オブジェクトに関する便利な記法は数多くある方がいい。
もっとも、Symbol.forの@@化も必要度高いと思うが。
199名無しさん@おーぷん :2014/05/23(金)21:18:30 ID:dhYYS8wXZ
Dartの「..」演算子(cascade operator)が欲しい。
これがあれば、メソッドチェーンのための返り値という無用な記述を無くせる。
数値リテラルは「.」で開始or終了できないようにすればいい。
200名無しさん@おーぷん :2014/05/23(金)21:24:33 ID:4K5EzZvro
一文字の一時変数使えばあんまり変わらなくね?
もしくはそれこそmixin演算子の出番だと思うけど。
201名無しさん@おーぷん :2014/05/23(金)21:33:54 ID:dhYYS8wXZ
そりゃそうなんだけど、ライブラリでもよく見るし、メソッドチェーンってそれなりに需要はあると思うんだ。
mixin使うとどうなるの?
202名無しさん@おーぷん :2014/05/23(金)21:38:14 ID:4K5EzZvro
もし例えば
obj ..a = 1 ..b = 2 ..c = 3
なら
obj .= {a: 1, b: 2, c: 3}
でも分かりやすいと思う。

代入じゃなくて参照や関数呼び出しで使うんなら別だけど。
203名無しさん@おーぷん :2014/05/23(金)21:44:33 ID:dhYYS8wXZ
確かに代入だけならそれでいいが、メソッドとかも混ぜて使いたいんだ。
短い名前の変数使うより楽だし、それなりに読みやすいと思う。
204名無しさん@おーぷん :2014/05/23(金)21:47:11 ID:0ySp4qvkk
>>185がよく分からないんだけど
右辺が識別子だと o = o.識別子 なのに
オブジェクト初期化子だと mixin(o, 右辺値) になるの?
それだと既存のオブジェクトを mixin するのには使えない?
というか右辺で意味が変わり過ぎじゃね?
205名無しさん@おーぷん :2014/05/23(金)21:51:35 ID:4K5EzZvro
>>203
with文がもうちょいまともだったらよかったのにね。
strictモードでwith文がまともになって帰ってきたりしないかな。

>>204
使えない。
というか正確には「.={~}」という別の構文。「.=」のオマケ。
これだけで考えるのならそれこそ「A mixin B」でもいいが。
206名無しさん@おーぷん :2014/05/23(金)21:59:11 ID:0ySp4qvkk
なるほど、別の構文なのね
同じ演算子が違う挙動を持つのは嫌だなあ
mixinはObject.mixinでいいと思うんだが
207名無しさん@おーぷん :2014/05/23(金)22:01:06 ID:4K5EzZvro
Object.assignならある。
が、列挙可のみだから、列挙不可のownプロパティもコピーする演算子があればちょうどいいと思う
208名無しさん@おーぷん :2014/05/24(土)07:16:14 ID:jj4xznFOy
>>198
mixinのコードを簡単にかけるようになったら、出来たコードを読回するのが困難になるからいらない
javascriptに高い生産性があるとしたら、想像力を掻き立てるような不毛な抽象化がないことだ
209名無しさん@おーぷん :2014/05/24(土)07:17:15 ID:jj4xznFOy
本家のム板って何で落ちてるの?
210名無しさん@おーぷん :2014/05/24(土)08:39:21 ID:jj4xznFOy
英語資料にアクセスできないなら、プログラマにはなれないよ
211名無しさん@おーぷん :2014/05/24(土)16:33:18 ID:orW6lL5OQ
>>208
簡単に書けないと分かりにくい記述が増えるだけでしょ
ES6からプロトタイプベースのベールが剥がれて
Symbolとかメタプロ的な事もできるようになったのに
記述方法だけが遅れてたらバッドノウハウが増えるだけ
212名無しさん@おーぷん :2014/05/24(土)16:49:15 ID:orW6lL5OQ
例えば
http://toro.2ch.net/test/read.cgi/tech/1325448978/572
であるけどイテレータに遅延処理実装しようと思ったら簡素には書けない
今まで出てきた夢構文を使えば

%ArrayIteratorPrototype% .= {
 #filter(func) {
  return {
  __proto__: this,
   next: send => {
    do {
     var o = this.next(send)
    } while (!o.done && !func(o.value))
    return o
   }
  }
 }
}

let iter = [1,2,3,4,5].values()
iter .= filter(v => v > 2)
iter .= filter(v => v % 2)
iter.next().value //3
iter.next().value //5
iter.next().value //undefined
213名無しさん@おーぷん :2014/05/25(日)15:04:14 ID:7A94rwLaw
今気づいたんだけどES6はIterator共有クラスないのな。
これはちょっと面倒かもしれない。
214名無しさん@おーぷん :2014/05/25(日)22:46:56 ID:YTmqyel26
誰もいない
215名無しさん@おーぷん :2014/05/26(月)11:19:28 ID:AiGXLzZU1
誰もいない
216名無しさん@おーぷん :2014/05/26(月)14:59:51 ID:jCnTSpHwT
kome拡張ブックマークレット
・ログをIDで色分けする

javascript:(function(){var _L=_insertLog,r=function(){return Math.random()*256|0},b={};_insertLog=function(_,d){var x=r(),y=r(),z=x+y<=(700-256)?255:700-(x+y),c=b[d];if(!c)c=b[d]='rgb('+x+','+y+','+z+')';_L.apply(0,arguments);$($('#klog_view div')[0]).css({'color':c})}})();updateLog();0

(※)色が分かりにくい時はもう一度実行してください
217名無しさん@おーぷん :2014/05/26(月)15:08:57 ID:jCnTSpHwT
色んな色が出るように修正
javascript:(function(){var _L=_insertLog,r=function(){return Math.random()*256|0},b={};_insertLog=function(_,d){var x,y,z,c=b[d];do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';_L.apply(0,arguments);$($('#klog_view div')[0]).css({'color':c})}})();updateLog();0
218名無しさん@おーぷん :2014/05/26(月)15:29:22 ID:jCnTSpHwT
+背景を不透明にする
javascript:(function(){var _L=_insertLog,r=function(){return Math.random()*256|0},b={};_insertLog=function(_,d){var x,y,z,c=b[d];do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';_L.apply(0,arguments);$($('#klog_view div')[0]).css({'color':c})}})();$('#klog_view').css('opacity',1);updateLog();0
219名無しさん@おーぷん :2014/05/26(月)17:11:31 ID:jCnTSpHwT
+ID表示
javascript:(function(){window._xX='';if(!window._L)window._L=eval(('('+_insertLog).replace(/\>X\</,'>"+_xX+"<')+')');var r=function(){return Math.random()*256|0},b={},v=[];_insertLog=function(_,d){var x,y,z,c=b[d],o=v.indexOf(d)+1;do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';if(!o)o=v.push(d);_xX=o+':';_L.apply(0,arguments);$($('#klog_view div')[0]).css({'color':c})};$('#klog_view').css('opacity',1);updateLog()})();0
220名無しさん@おーぷん :2014/05/26(月)22:23:16 ID:v9L9Xb8rV
(Firefox等で動かない時は末尾の「0」を削ればOK)
221名無しさん@おーぷん :2014/05/26(月)23:37:25 ID:v9L9Xb8rV
kome拡張ブックマークレット
・コテハンを付ける
javascript:(function(){var h=$._data($('#komeform')[0]).events.submit[0];if(!window._kH)_kH='';_kH=prompt('コテハン?',_kH)||'';if(!window._sH)window._sH=h.handler;h.handler=function(e){var s=$('#kome');if(_kH)s.val(s.val()+'@'+_kH);_sH(e)}})();0
222名無しさん@おーぷん :2014/05/27(火)01:08:29 ID:9RwpwRZun
色分け+アンカ対応実験(「>>5」のようにアンカ)
javascript:(function(){window._xX='';if(!window._L)window._L=eval(('('+_insertLog).replace(/\>X\</,'>"+_xX+"<')+')');var _sC=showComment,h=$._data($('#komeform')[0]).events.submit[0],R=function(s){return s.replace(/\>\>(\w{4})/g,function(_,w){for(var i=0;i<v.length;i++){if(v[i].slice(3,7)==w)return '>>'+(i+1)};return '>>You' })},r=function(){return Math.random()*256|0},b={},v=[];_insertLog=function(k,d){k=R(k);var x,y,z,c=b[d],o=v.indexOf(d)+1;do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';if(!o)o=v.push(d);_xX=o+':';_L.apply(0,arguments);if(!isImgur(k))$($('#klog_view div')[0]).css({'color':c})};showComment=function(c){c=R(c);_sC.apply(0,arguments)};;if(!window._sH)window._sH=h.handler;h.handler=function(e){var s=$('#kome');s.val(s.val().replace(/\>\>(\d+)/g,function(_,w){return '>>'+(v[w-1]?v[w-1].slice(3,7):'???')}));_sH(e)};$('#klog_view').css('opacity',1);updateLog()})();0
223名無しさん@おーぷん :2014/05/27(火)11:45:19 ID:UUVTIbqWJ
+いろいろオマケ
javascript:(function(){window._xX='';if(!window._L)window._L=eval(('('+_insertLog).replace(/\>X\</,'>"+_xX+"<')+')');var _sC=showComment,h=$._data($('#komeform')[0]).events.submit[0],R=function(s){return s.replace(/\>\>(\w{4})/g,function(_,w){for(var i=0;i<v.length;i++){if(v[i].slice(3,7)==w)return '>>'+(i+1)};return '>>You' })},r=function(){return Math.random()*256|0},b={},v=[];_insertLog=function(k,d){k=R(k);var x,y,z,c=b[d],o=v.indexOf(d)+1;do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';if(!o)o=v.push(d);_xX=o+':';_L.apply(0,arguments);if(!isImgur(k))$($('#klog_view div')[0]).css({'color':c})};showComment=function(c){c=R(c);var ih=window.innerHeight;window.innerHeight=ih>600?ih-500:100;_sC.apply(0,arguments);window.innerHeight=ih};;if(!window._sH)window._sH=h.handler;h.handler=function(e){var s=$('#kome');s.val(s.val().replace(/\>\>(\d+)/g,function(_,w){return '>>'+(v[w-1]?v[w-1].slice(3,7):'???')}));_sH(e)};$('#klog_view').css('opacity',1);$('#komediv,#klog_view').css('width','500px');$('#komediv div[align]').prop('align','center');$($('#komeform input')[0]).css('width','450px');updateLog()})();0
224名無しさん@おーぷん :2014/05/27(火)11:48:24 ID:bW1mE5Dyf
いやぁ、色分け機能作ってくれた人ありがとう。
説明の記憶を辿ってどうにか使えるようにできたよ。
225名無しさん@おーぷん :2014/05/27(火)11:55:41 ID:UUVTIbqWJ
おめ
226名無しさん@おーぷん :2014/05/27(火)16:45:40 ID:Ktc3Wsz4J
komeの拡張機能を作ってくれた方、ありがとうございます。
これ、便利なだけじゃなく凄く楽しいです。
227名無しさん@おーぷん :2014/05/28(水)01:41:45 ID:mReqQ4cmq
komeのサムネでっかくしようとにここにあるソースパクってやってみたけど微妙に出来ませんでした
一応でっかくなるからコレでいいやって感じ

javascript:(function(){var _sC=showComment;showComment=function(c,u){var elements = document.getElementsByTagName( 'img' );for ( var i = 0, il = elements.length; i < il; i++ ) {var element = elements[i];if ( /\bkkorabo\b/.test( element.className ) ) {element.height=100;}}_sC(c,u);}})();0
228名無しさん@おーぷん :2014/05/28(水)07:41:10 ID:HMGKVSpCn
ブックマークレットのスレがあるんだからそっちに書けよ
229名無しさん@おーぷん :2014/05/28(水)13:10:25 ID:DbQLuXxYS
このスレの宣伝でしょ
スレ分けすぎ
230197 :2014/05/29(木)12:07:13 ID:iWEGRNyCh
wii...
231197 :2014/05/29(木)17:41:51 ID:xGooc810H
wow!
232名無しさん@おーぷん :2014/05/29(木)23:32:54 ID:ox8D9PC7D
うーにゃー
233名無しさん@おーぷん :2014/06/02(月)08:41:51 ID:GlZKP4U6y
誰もいない
234名無しさん@おーぷん :2014/06/03(火)15:31:03 ID:qaG5QigRh
SwiftってJavaScript(ES6)に似てるよね
Cから始まりCを脱却した点が同じだからだろうか
235名無しさん@おーぷん :2014/06/26(木)17:04:20 ID:sQl9od5G8
だーれもいないわ
236名無しさん@おーぷん :2014/06/26(木)21:41:33 ID:QewCsol9B
X ID=ydujhBu6さーーーーーん
237名無しさん@おーぷん :2014/06/27(金)00:43:46 ID:NrSarrwx0
親切なお方ーーーーー
238名無しさん@おーぷん :2014/06/27(金)10:00:00 ID:1thFUKmUg
そういえば上で話されてたmixin構文が固まりそうだ
spread構文でやるらしい

o1 = { a:1, b:2 }
o2 = { b:3, c:4 }
o3 = { c:5, d:6 }

{ ...o1, ...o2, ...o3}
// { a:1, b:3, c:5, d:6 }

{ ...o3, ...o2, ...o1}
// { a:1, b;2, c:4, d;6 }
239名無しさん@おーぷん :2014/06/27(金)11:48:23 ID:NrSarrwx0
誰かおるだろうか
240名無しさん@おーぷん :2014/06/27(金)14:26:36 ID:i4zXwO5LY
おるで
241名無しさん@おーぷん :2014/06/27(金)20:16:24 ID:L9cqTOjG4
おるで~
242名無しさん@おーぷん :2014/06/27(金)22:39:37 ID:NrSarrwx0
おった
243名無しさん@おーぷん :2014/06/27(金)22:39:53 ID:NrSarrwx0
質問
244名無しさん@おーぷん :2014/06/27(金)22:44:42 ID:NrSarrwx0
komeで画像をUPしたら、IDでおっさんと言われ。何でわかるのか尋ねたら
javaだのブックマークレットのレスを読んだらワカルと言われたが
ちっとも意味がわからない。
245名無しさん@おーぷん :2014/06/28(土)00:16:53 ID:OLHYelyJE
>>238
https://gist.github.com/sebmarkbage/aa849c7973cb4452c547#file-objectspreadoperator-md
これ?
mixinじゃなくてassignっぽくね
mixinはもう期待できないのかねぇ…
246名無しさん@おーぷん :2014/06/28(土)05:02:09 ID:c58SaN4U1
プロトタイプベース言語において両者は同じことでしょ
247名無しさん@おーぷん :2014/06/28(土)05:02:48 ID:c58SaN4U1
>>244
このスレの>>1から見なおせ
248名無しさん@おーぷん :2014/06/28(土)11:29:53 ID:OLHYelyJE
>>246
アクセサはアクセサのまま移せないとmixinとは言えないと思う
249名無しさん@おーぷん :2014/06/28(土)18:04:42 ID:CtHyTHDRc
どうせArrayとObjectで振る舞いを変えるのは変だってことで、
Array.prototypeに@@spreadやらが追加される流れになるのは間違いないだろう。

ここでもし@@spread(targetObj)→<Iterator>{key,value}なら望みは潰えるが、
どちらかと言うと@@spread(newObj,targetObj)になるんじゃないか?
それならObject.prototype.@@spreadでアクセササポートすればOKになる。

モジュールのお陰でglobalが分離されプロトタイプ汚染を心配する必要が無くなったからこれでいいと思う。
もしくは演算子オーバーロードを使う。
250名無しさん@おーぷん :2014/06/29(日)05:01:56 ID:R2nMJPTOB
@@createと@@newに結末はどうなるんだろう
251名無しさん@おーぷん :2014/07/01(火)01:34:07 ID:zAsoNNv8a
なかなかclass構文実装されないなと思ってたらこうなってたのな
http://esdiscuss.org/topic/es6-classes-deferring-the-creation-step
こりゃ下手するとclass構文がES7に持ち越しになるかもな
因みに自分はこっちの案が好き
http://esdiscuss.org/topic/initialize-or-describing-subclassing-with-mixins

@@createを持ち越すのなら、@@hasInstanceとか演算子の係るものも延期して
演算子オーバーロードと一緒に入れた方がいいかもしれない
そう思うと@@isConcatSpreadableとかもどうかと思えてくるな
皆こういうので納得してるの?
自分たちが何年か後使っていくことになるんだから精査した方がいいよ
252名無しさん@おーぷん :2014/07/02(水)19:16:50 ID:ULHgFuho3
Promise.allやraceを使うの煩わしいなと思ってたんだけど
演算子オーバーロードが使えるようになれば&や|でできるのか
素晴らしいな
253名無しさん@おーぷん :2014/07/02(水)22:53:56 ID:BupzDbgjd
返事がない
ただの屍のようだ
254名無しさん@おーぷん :2014/07/04(金)00:57:11 ID:EyB7zZKNY
aruyo
255名無しさん@おーぷん :2014/07/04(金)20:26:33 ID:2KiRNxFNk
おるかー?
256名無しさん@おーぷん :2014/07/06(日)15:49:17 ID:RxktLhGM4
返事がない
ただの屍のようだ
257名無しさん@おーぷん :2014/07/08(火)23:52:46 ID:7zCChddEQ
おれよ
258名無しさん@おーぷん :2014/07/11(金)10:54:06 ID:7UVLcTrsa
誰かいる?
259名無しさん@おーぷん :2014/07/12(土)15:03:22 ID:lSfvvXsMB
() => () => () => () => () => ()
260名無しさん@おーぷん :2014/07/13(日)22:03:00 ID:LEQACdhIb
おるかおるか~?
261名無しさん@おーぷん :2014/07/14(月)16:48:49 ID:qzdGZHqMb
誰もいない

井内
262名無しさん@おーぷん :2014/07/14(月)23:55:02 ID:Fg9hvskB5
いるよ
263名無しさん@おーぷん :2014/07/15(火)05:11:09 ID:2A6NaDDoT
複数のURLを全部読み終わってから、処理したい場合、どうすればいいのでしょう?
WinAPIのSleepのようなものがあれば、ループで待つのですが
264名無しさん@おーぷん :2014/07/15(火)20:45:44 ID:RjtEcwXZz
Promiseを使うといいと思う


function co(gen) {
 return function (...args) {
  var iter = gen.apply(this, args)
  return new Promise( (ok, ng) => {
   function chain(v) {
    let {value, done} = iter.next(v)
    let p = Array.isArray(value) ? Promise.all(value) : Promise.resolve(value)
    p.then(done ? ok : chain).catch(ng)
   }
   chain()
  })
 }
}


function fetch(url) {
 return new Promise( (ok, ng) => {
  let xhr = new XMLHttpRequest
  xhr.onload = () => {
   if (xhr.status == 200) ok(xhr.response)
   else ng(new Error('404'))
  }
  xhr.onerror = ng
  xhr.send()
 })
}


let main = co(function* main() {

 let urls = ['a.txt', 'b.txt', 'c.txt']
 let texts = yield urls.map(fetch)
 ......
 ......

})


main()
265名無しさん@おーぷん :2014/07/15(火)20:53:44 ID:RjtEcwXZz
うーん、それともひょっとしたら遅延評価っぽい方が良かったりするのかな
266名無しさん@おーぷん :2014/07/16(水)09:01:09 ID:eIaVvzITF
Promiseは良く分かりません
いろいろ考えているうちに、もっと汎用的なものを作ろうと思いました
タイマでフラグを監視してみます

Promise - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise
267名無しさん@おーぷん :2014/07/16(水)11:42:35 ID:eIaVvzITF
その話は置いといて、

function asyncReadDoc(uri, loadfunc) {
 let x = new XMLHttpRequest();
 x.open("GET", uri, true);
 x.responseType = "document";
 x.onload = function () { loadfunc(x.response); };
 x.onerror = function () { console.error(x.statusText); }
 x.send(null);
}

var server = "http://open2ch.net/headline.cgi?n=10";
var local = "file:///D:/test.html";

// サーバー上のdocumentは取得可能
asyncReadDoc(server, function(doc) { document.title = doc.documentElement.outerHTML;});
268名無しさん@おーぷん :2014/07/16(水)11:44:22 ID:eIaVvzITF
(Firefoxの話です)
でも、ローカルに保存してdocumentを取得しようとすると、
"整形式になっていません。" エラーが出ます
いろいろ試したところ、数値を"で囲む必要があるみたい
<font color="#ff9900">
<font size="2">

asyncReadDoc(local, function(doc) { document.title = doc.documentElement.outerHTML;});
269名無しさん@おーぷん :2014/07/16(水)12:01:25 ID:sWIX6DVSb
Promiseはかなり汎用的で統一されたインターフェイスを提供してくれるすぐれものだぞ。
それに何にも難しいことはない。
http://azu.github.io/promises-book/
270名無しさん@おーぷん :2014/07/16(水)12:08:54 ID:sWIX6DVSb
あとonerrorは通信のエラーだからstatusTextを見る意味はない。
271名無しさん@おーぷん :2014/07/16(水)18:09:15 ID:eIaVvzITF
ここで使われてたんですよ。
でもちょっと調べます

同期および非同期リクエスト - XMLHttpRequest | MDN
https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

var xhr = new XMLHttpRequest();
xhr.open("GET", "/bar/foo.txt", true);
xhr.onload = function (e) {
 if (xhr.readyState === 4) {
  if (xhr.status === 200) {
   console.log(xhr.responseText);
  } else {
   console.error(xhr.statusText);
  }
 }
};
xhr.onerror = function (e) {
 console.error(xhr.statusText);
};
xhr.send(null);
272名無しさん@おーぷん :2014/07/16(水)18:18:51 ID:eIaVvzITF
3種類チェックしてみました

var server = "xhttp://open2ch.net/headline.cgi?n=10";
// x.open("GET", uri, true) で例外が発生し、onload と onerrorは発生しない

var server = "http://xopen2ch.net/headline.cgi?n=10";
// onerror
// x.readyState = 4
// x.status = 0
// x.statusText =

var server = "http://open2ch.net/test.html";
// onload
// x.readyState = 4
// x.status = 200
// x.statusText = OK
// x.response = <html><head></head><body>なんか変みたいです。。1</body></html>
273名無しさん@おーぷん :2014/07/16(水)18:31:01 ID:eIaVvzITF
エラー処理はこうか

 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); };
274名無しさん@おーぷん :2014/07/16(水)18:42:47 ID:eIaVvzITF
ここでも、req.onerror で req.statusText 使ってる

JavaScript Promiseの本
http://azu.github.io/promises-book/

function getURL(URL) {
  return new Promise(function (resolve, reject) {
    var req = new XMLHttpRequest();
    req.open('GET', URL, true);
    req.onload = function () {
      if (req.status == 200) {
        resolve(req.response);
      } else {
        reject(new Error(req.statusText));
      }
    };
    req.onerror = function () {
      reject(new Error(req.statusText));
    };
    req.send();
  });
}
// 実行例
var URL = "http://httpbin.org/get";
getURL(URL).then(function onFulfilled(value){
  console.log(value);
}).catch(function onRejected(error){
  console.error(error);
});
275名無しさん@おーぷん :2014/07/17(木)04:19:45 ID:n3vRF2Cs6
タイマ使うやり方は、タイマを確実にとめるのが大変だった
276名無しさん@おーぷん :2014/07/17(木)05:09:06 ID:n3vRF2Cs6
関数ベースでやった
jobNextで開始するのが変だけど

function asyncReadDoc(uri, loadfunc) {
 let x = new XMLHttpRequest();
 x.open("GET", uri, true);
 x.responseType = "document";
 x.onload = function () { loadfunc(x.response); }
 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); }
 x.send(null);
}

function readDocJob(jobs, data) {
 asyncReadDoc(data, function(doc) {
  console.log("loaded: " + doc.documentURI);
  jobNext(jobs);
 });
}

function finishJob(jobs) {
 console.log("finishJob");
}

function jobNext(jobs) {
 let j = jobs.shift();
 if (j && j.func)
  j.func(jobs, j.data);
}

var jobs = [];
jobs.push({func: readDocJob, data: "http://open.open2ch.net/test/read.cgi/open2ch/1405241314/l1"});
jobs.push({func: readDocJob, data: "http://open2ch.net/headline.cgi?n=10&bbs=tech"});
jobs.push({func: finishJob});
jobNext(jobs);
277名無しさん@おーぷん :2014/07/17(木)05:37:41 ID:n3vRF2Cs6
function readDocJob(jobs, data) {
 asyncReadDoc(data, function(doc) {
  console.log("loaded: " + doc.documentURI);
  jobs.next();
 });
}

// こういうやり方は効率悪いでしょうか?
function createSeqJobs() {
 let result = [];
 result.add = function(func, data) {
  result.push({func: func, data: data});
 }
 result.next = function() {
  let j = result.shift();
  if (j) j.func(result, j.data);
 }
 result.run = function() {
  result.next();
 }
 return result;
}

var jobs = createSeqJobs();
jobs.add(readDocJob, "http://open.open2ch.net/test/read.cgi/open2ch/1405241314/l1");
jobs.add(readDocJob, "http://open2ch.net/headline.cgi?n=10&bbs=tech");
jobs.add(function(){console.log("finishJob");});
jobs.run();
278名無しさん@おーぷん :2014/07/17(木)18:29:21 ID:z2XNO1gM7
>>271-274
エラー時はstatusTextは常に空文字なんだから調べる必要なんてないよ。
つうかonloadとonerrorをonloadendに一本化すればいい。

>>277
promise使ったらって言われてるんだからそうしたら?
それが一番素直でいいと思うよ。
279名無しさん@おーぷん :2014/07/18(金)10:14:33 ID:CROSAdVuY
promiseは良く分からないのでダメです

function createSeqJobs() {
 let result = [];
 result.add = function(args) {
  result.push(Array.prototype.slice.call(arguments));
 }
 result.next = function() {
  let job = result.shift();
  if (job) {
   let func = job.shift();
   if (func) func.apply(null, job);
  }
 }
 result.run = function() {
  result.next();
 }
 return result;
}

var jobs = createSeqJobs();

function onReadDoc(doc) {
 console.log("loaded: " + doc.documentURI);
 jobs.next();
};

jobs.add(asyncReadDoc, "http://open.open2ch.net/test/read.cgi/open2ch/1405241314/l1", onReadDoc);
jobs.add(asyncReadDoc, "http://open2ch.net/headline.cgi?n=10&bbs=tech", onReadDoc);
jobs.add(function(){console.log("finishJob");});
jobs.run();
280名無しさん@おーぷん :2014/07/18(金)10:56:52 ID:stdpDc7JD
新しいことを知るために質問したんでしょ?
アドバイス聞かないのなら自分の好きなようにやればいいじゃん
281名無しさん@おーぷん :2014/07/18(金)14:59:15 ID:HUNhxPJgp
Promiseってそんな大層なものじゃないよ
274のgetURLを借りるとこんな感じ
getURL(url1).then(function () {
 onReadDoc(doc);
 return getURL(url2);
}).then(function () {
 onReadDoc(doc);
 console.log('finishJob');
});

使いたくないなら今はそれでもいいんじゃない
uupaa/Task.jsとかも見てみれば
282名無しさん@おーぷん :2014/07/18(金)15:41:48 ID:CROSAdVuY
このサンプルが、Firefox30のスクラッチパッド上で、
実行環境がWebページの時は何も起きず、(→あとでやってみたら出来ました)
実行環境がブラウザの時は "promise.then(...).then(...).catch is not a function @Scratchpad/1:18:1
が出ます
ブラウザ上で実行ボタンを押したときは、問題ないんですけどね(添付画像)

JavaScript Promiseの本
http://azu.github.io/promises-book/#ch2-promise.then
2.4.1. promise chain

function taskA() {
  console.log("Task A");
}
function taskB() {
  console.log("Task B");
}
function onRejected(error) {
  console.log("Catch Error: A or B", error);
}
function finalTask() {
  console.log("Final Task");
}

var promise = Promise.resolve();
promise
  .then(taskA)
  .then(taskB)
  .catch(onRejected)
  .then(finalTask);
http://img.open2ch.net/p/tech-1372638049-282.png
283名無しさん@おーぷん :2014/07/18(金)15:47:53 ID:CROSAdVuY
>実行環境がWebページの時は何も起きず、(→あとでやってみたら出来ました)

わかりました
Firefox30のJavaScriptを有効にして、ページを再読み込みしたら出来ました。
表示しているページはJavaScriptを使ってないにもかかわらず、
スクラッチパッドでの実行に影響しているようです。
284名無しさん@おーぷん :2014/07/18(金)16:01:14 ID:CROSAdVuY
function asyncReadDoc(uri, loadfunc) {
let x = new XMLHttpRequest();
x.open("GET", uri, true);
x.responseType = "document";
x.onload = function () { loadfunc(x.response); }
x.onerror = function () { console.error("XMLHttpRequest error: " + uri); }
x.send(null);
}

function onReadDoc(doc) {
console.log("loaded: " + doc.documentURI);
};

var promise = Promise.resolve();
promise
.then(asyncReadDoc("http://open2ch.net", onReadDoc))
.then(asyncReadDoc("http://open2ch.net/test.html", onReadDoc))
//.then(function(){console.log("final task");});
.then(setTimeout(function(){console.log("final task");}, 10));

実行結果
"final task"
"loaded: http://open2ch.net/"
"loaded: http://open2ch.net/test.html"
285名無しさん@おーぷん :2014/07/18(金)16:03:16 ID:CROSAdVuY
>>284のコードのthenは待ってくれないから、目的のものと違う

JavaScript Promiseの本
http://azu.github.io/promises-book/#promise-is-always-async
Promise.resolve(value) 等を使った場合、 promiseオブジェクトがすぐにresolveされるので、
.then に登録した関数も同期的に処理が行われるように錯覚してしまいます。

しかし、実際には .then で登録した関数が呼ばれるのは、非同期となります。
286名無しさん@おーぷん :2014/07/18(金)16:12:32 ID:CROSAdVuY
Task · uupaa/Task.js Wiki · GitHub
https://github.com/uupaa/Task.js/wiki/Task

Task.js/lib/Task.js at master · uupaa/Task.js · GitHub
https://github.com/uupaa/Task.js/blob/master/lib/Task.js
287名無しさん@おーぷん :2014/07/18(金)16:18:07 ID:HUNhxPJgp
ちょっと試してほらだめじゃんじゃなくて、もっとじっくり読むべし

asyncReadDocはpromiseオブジェクトを返すように
あとthenの引数は関数だよ

function asyncReadDoc(uri) {
 return new Promise(function (resolve, reject) {
  let x = new XMLHttpRequest();
  x.open("GET", uri, true);
  x.responseType = "document";
  x.onload = function () { resolve(x.response); };
  x.onerror = function () { reject("XMLHttpRequest error: " + uri); }
  x.send(null);
 });
}

function onReadDoc(doc) {
 console.log("loaded: " + doc.documentURI);
};

asyncReadDoc('http://open2ch.net/')
 .then(function (doc) { console.log(doc.documentURI); return asyncReadDoc('http://open2ch.net/test.html'); })
 .then(function (doc) { console.log(doc.documentURI); console.log('finish'); })
 .catch(function (msg) { console.error(msg); });
288名無しさん@おーぷん :2014/07/19(土)03:33:25 ID:xecYTW8hn
Promise.all使おうぜ。
非効率すぎる。
289名無しさん@おーぷん :2014/07/19(土)17:41:28 ID:JYwv4TTGy
今ES6 Promise以上のフレームワークを求めるのなら
ParallelsとかStreamAPIの方向性、ES7 Vatとかそっちを見据えたものになると思う
ただし、それらはただ非同期の通信扱いたいだけのことだと持て余す
Promiseの粒度でいいと思うよ
290名無しさん@おーぷん :2014/07/24(木)10:16:07 ID:jMqYEUdHH
Chromeにアロー関数が実装された。。。だと。。。!?
291名無しさん@おーぷん :2014/07/24(木)21:58:05 ID:2OOHjTivz
現在のところこんな感じか
ES7
・静的な構造体チックな物だったり、型周りの強化
・演算子オーバーロードと、ValueObjectによる様々な新型
・Realmとスタンダードライブラリの定義
・パラレルとスレッド制御、StreamingAPI的な
・ES6で取りこぼした様々な便利なメソッド追加
ES8
・マクロ
292名無しさん@おーぷん :2014/07/26(土)14:57:38 ID:pg2r9PVJ2
おおう……
@@createの代わりに@@newになりそうな感じ…
https://gist.github.com/allenwb/49f0d4107c3053ad5795#file-1-f-p-new-js

これでnewをクローン演算子の代わりに使ったりできるな

Object.prototype[Symbol.new] = function (deep = Infinity) {
~~~
~~~
}

obj2 = new obj1
obj2 = new obj1(2)
293名無しさん@おーぷん :2014/07/27(日)04:15:07 ID:ZIhuEsHNA
過疎age
294名無しさん@おーぷん :2014/08/01(金)17:34:14 ID:ayD4SVcHH
JS、Webのアセンブリ時代の到来だ
https://docs.google.com/presentation/d/1yc2NDzFJ-0yD980URiTcV3oE_2cQDVzXuH4Rss1fG8s/edit
295名無しさん@おーぷん :2014/08/06(水)07:49:20 ID:Mi3cQfL37
リファレンスみたいなサイトで良いとこありませんか?
Firefox使ってるなら、MDNが一番良いのでしょうか?

JavaScript リファレンス - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference
296名無しさん@おーぷん :2014/08/06(水)18:45:54 ID:IBIlnei8R
DOMAPI全般だとMDNがいい
個別のWebAPIのリファレンスはそれぞれ解説サイトを探した方がいい
ベストなのは仕様書を早く読んで理解できるようになること
297名無しさん@おーぷん :2014/08/11(月)17:02:55 ID:nx90OSGy2
文字列とJSONを変換する関数の名前はどうあるべきですか?
わからん

strToJSON JSONToStr
strToJson jsonToStr
298名無しさん@おーぷん :2014/08/11(月)19:12:06 ID:q97YbRsEj
文字列とJSONを変換って具体的にはどういうこと?
JSONって普通は文字列の状態で扱うだろ
299名無しさん@おーぷん :2014/08/12(火)05:51:47 ID:NPbRmXQAX
つまり、JSONは文字列だから、
objToJson() / jsonToObj() が正しい

let o = {};
o.date = (new Date()).getTime();
console.log(o);

let s = JSON.stringify(o);
console.log(s);

let j = JSON.parse(s);
console.log(j);
300名無しさん@おーぷん :2014/08/12(火)05:56:47 ID:NPbRmXQAX
JSONはグローバルオブジェクトだから全部大文字が許されているのかもしれないと思ったら、

document.URL のURLは全部大文字だ
Node.baseURI もある
document - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/Document#Properties

decodeURIも大文字だ
decodeURI - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/decodeURI
301名無しさん@おーぷん :2014/08/12(火)06:00:04 ID:NPbRmXQAX
innerHTMLのHTMLも全て大文字だ
だから、
objToJSON() / JSONToObj() ってやらないと
302名無しさん@おーぷん :2014/08/12(火)11:24:41 ID:atrZGTXrB
既に標準のJSONAPIがあるんだから、parse、stringify意外に選択肢ないと思うが、
一般的に「AToB」は「A2B」と数字の2を使うといいよ。
JS界ではあまり見かけないけど、そこそこ一般的な命名法。
あと略語、名詞は常に大文字そのままが普通だよ。
オブジェクトも型として見るならクラスの記法そのままに先頭は大文字から。
どうしても気になるのなら「convertA2B」とかにすればいい。
303名無しさん@おーぷん :2014/08/16(土)14:33:36 ID:5pnguMax8
try~finallyと非同期ってめっちゃ相性が悪いきがするのですが

start
finally
finish
timeout

console.log("start");
try {
 setTimeout(function() {
  console.log("timeout");
 }, 100);
} finally {
 console.log("finally");
}
console.log("finish");
304名無しさん@おーぷん :2014/08/16(土)14:35:12 ID:5pnguMax8
順番に流れれば、こうやってできるのに

let p = null;
let q = null;
try {
 p = new Test();
 p.open();
 q = new Test();
 q.open();
} finally {
 if (p) p.close();
 if (q) q.close();
}
305名無しさん@おーぷん :2014/08/17(日)00:58:12 ID:eeKVlXnFn
Promise使え
もしくは>>264のcoみたいなとジェネレータ使えば
try-catchも同期的に使える
306名無しさん@おーぷん :2014/08/17(日)06:23:45 ID:zgl8ZMlfY
try-catchを使わないとダメなのは分かりましたが、
p.close()内で例外が生成されるかもしれないと考えたら、
夜も眠れません。
307名無しさん@おーぷん :2014/08/17(日)23:56:09 ID:vOarxANIA
どこで例外が発生しようがcoで囲んでいれば最終的にrejectedPromiseとしてキャッチできる
308名無しさん@おーぷん :2014/08/20(水)02:12:51 ID:faaTQ681M
非同期ジェネレータとfor-on文の提案に感動した
https://docs.google.com/file/d/0B4PVbLpUIdzoMDR5dWstRllXblU/edit
これでますますイベントドリブンが捗るな
309名無しさん@おーぷん :2014/08/22(金)11:46:02 ID:eWgcnhX1G
ES6での継承周りの概念に革命が起こった。
「new*」は「this」の親戚みたいなもんで、「new Hoge()」ならHogeコンストラクタ内の「new*」は勿論、
そこから「super()」で読んだコンストラクタ内の「new*」もHogeになる。
ちなみにただの「Hoge()」なら「new*」は「undefined」になる。
これによって、クラスは『何がコンストラクタとして呼ばれたかどうか』が分かり、
@@createでの2段階コンストラクタでの解決策で発生する、『『未初期化である』とだけ初期化されただけの状態』もなくなる。

class Before {
 [Symbol.create]() {
  let instance = Object.create(this.prototype)
  priv(instance).initialized = false
  return instance
 }
 constructor() {
  let instance = this
  if (priv(instance).initialized == undefined)
   throw 'Constructor requires "new"'
  if (priv(instance).initialized == false)
   throw 'Instance has already been initialized'
  priv(instance).initialized = true
  ......
 }
 method() {
  if (priv(instance).initialized == false)
   throw 'Instance has not been initialized'
  ......
 }
}



class After {
 constructor() {
  if (!new*) throw 'Constructor requires "new"'
  let instance = Object.create(new*.prototype)
  ......
 }
 method() {
  ......
 }
}
310名無しさん@おーぷん :2014/08/27(水)09:37:35 ID:vl6nPRYhB
>>213
%IteratorPrototype%が
311名無しさん@おーぷん :2014/08/27(水)09:37:48 ID:vl6nPRYhB
できることになってよかったわ
312名無しさん@おーぷん :2014/09/03(水)10:04:09 ID:1BytU5v52
age
313名無しさん@おーぷん :2014/09/06(土)15:53:28 ID:2APEOzpsF
Google V8のCrankShaftに次ぐ最適化機構のTurboFan楽しみだな。
314名無しさん@おーぷん :2014/09/16(火)17:42:05 ID:8ErzPFeHw
2010年くらいからの関数型ブームが着実に伸びてるな。
ES7ではFRPが重要になってくる。
315名無しさん@おーぷん :2014/09/21(日)05:06:48 ID:kfowVelmf
ついにJavaScriptカーネルが出てきたか。
やっぱり未来では99%のことはJavaScriptでする時代になるんだろうな。
http://runtimejs.org/
http://runtimejs.org/jsconf/#/
316名無しさん@おーぷん :2014/09/29(月)18:00:55 ID:37WxHOnIW
↓にある正規表現リテラルが長いので、複数行に分割したいのですが、
どうすればよいのでしょう?

JavaScriptコードをトークンに分解する正規表現 - JSFiddle
http://jsfiddle.net/polygonplanet/5gWtm/
317名無しさん@おーぷん :2014/09/29(月)18:45:39 ID:37WxHOnIW
let a = [];
a.push('ABC');
a[0].hoge = 100;
console.log(a[0].hoge); // undefined になるけど、どうしたらいい?
318名無しさん@おーぷん :2014/09/29(月)19:36:49 ID:37WxHOnIW
JavaScriptよくわからんわ

let c = {};
c['name'] = {};
c['name'].count = 1;
for (i in c) { console.log(i + ',' + i.count);} // name,undefined

let d = {};
d['name'] = {count: 1};
for (i in d) { console.log(i + ',' + i.count);} // name,undefined
console.log(d['name'].count); // 1
319名無しさん@おーぷん :2014/09/29(月)20:49:03 ID:dLTzhE7jJ
>>316
RegExpコンストラクタを使って、文字列を分割して記述すればいい
文字列としてのエスケープと正規表現としてのエスケープがの両方を考慮しないといけないけど
var pattern = new RegExp(
/* block comment */ '(\\/\\*[\\s\\S]*?\\*\\/' +
/* line comment */ '|\\/{2,}[^\\r\\n]*(?:\\r\\n|\\r|\\n|) +
...);

>>318
for (i in c) における i はプロパティ名、つまり'name'
for (i in c) console.log(c[i] + ',' + c[i].count);
32037WxHOnIW :2014/09/30(火)04:54:23 ID:MMhtvGe3x
>>319
どうもです
トークンを数えたのですが、重すぎました

>>317 は無理なんですか?
ソートしたいから、配列に入れたいんですよね
{token: 'function', count: 1} を入れれば可能ですが、
indexOfが使えなくて、自前でやると遅くなるんですよね。

連想配列に数えて、最後に配列にしてソートするのかな
321名無しさん@おーぷん :2014/09/30(火)18:17:47 ID:uBwplEucK
>>317
プリミティブ値(JSでは数値、文字列、論理値)はプロパティを持てない
var s = 'function';
s.count = 100; // このときプリミティブ値を一時的にラップするオブジェクトが内部的に作られ、countプロパティが付加される
console.log(s.count); // sはプリミティブ値のままだから、countプロパティを知らない

>>319
トークンを数えるだけなら連想配列に見立てたオブジェクトであれこれするのが一番早いだろうけど
var tokens = { 'function': { count: 1 }, ... };
tokens.function++;

やりたいことがわからないからなんとも言えないけど、esprimaなどのJS製JSパーサーも見てみては
322名無しさん@おーぷん :2014/09/30(火)19:36:46 ID:MMhtvGe3x
>>321
フォルダ内の全js/jsmファイルの、全トークンをリストアップして、
出現回数でソートして表示ってのをやりたかったのです。

ariya/esprima · GitHub
https://github.com/ariya/esprima
https://github.com/ariya/esprima/blob/master/esprima.js
323名無しさん@おーぷん :2014/09/30(火)19:39:11 ID:MMhtvGe3x
\browser\omni\chrome\browser\content\browser\devtools\codemirror\
フォルダにある24個ファイルの結果の一部ですが、
これだけでも時間かかった

10884 .
10700 (
10700 )
8536 ;
8504 ,
4957 =
3790 {
3790 }
2677 :
2584 cm
2437 if
2291 var
1539 function
1432 return
1294 i
1253 [
1253 ]
1193 line
1037 ==
957 0
873 this
826 +
814 &&
774 doc
731 1
707 state
645 type
324名無しさん@おーぷん :2014/09/30(火)19:46:55 ID:MMhtvGe3x
これならできましたわ

九章第七回 プリミティブとオブジェクト — JavaScript初級者から中級者になろう — uhyohyo.net
http://uhyohyo.net/javascript/9_7.html

var s = new String('function');
s.count = 100;
console.log(s.count); // 100
325名無しさん@おーぷん :2014/09/30(火)19:49:35 ID:MMhtvGe3x
var a = [];
var s = new String('function');
a.push(s);
s.count = 100;
console.log(a[0].count); // 100
console.log(a.indexOf('function')); // -1 あーれー
326名無しさん@おーぷん :2014/10/01(水)16:30:10 ID:6ispTGq22
素直にオブジェクトを入れろ
で、indexOfじゃなくてfindIndexを使う
重さは諦める
327名無しさん@おーぷん :2014/10/01(水)18:04:07 ID:eBi5zZ1Cc
あ、早い
findIndexでトークンの追加が倍早くなりました

let tokens = [];

function find(token) {
 for (let i = 0; i < tokens.length; i++) {
  if (tokens[i].token == token) return i;
 }
 return -1;
}

function addtoken(token) {
 // let i = find(token);
 let i = tokens.findIndex(function(e){return e.token == token;});
 if (i >= 0) {
  tokens[i].count++;
 } else {
  tokens.push({token: token, count: 1});
 }
}
328名無しさん@おーぷん :2014/10/01(水)18:17:54 ID:eBi5zZ1Cc
さらにすこし速くなりました

let o = {};

function addtoken(token) {
 if (o[token]) {
  o[token]++
 } else {
  o[token] = 1;
 }
}

...

let tokens = [];
for (let i in o) { tokens.push({token: i, count: o[i]}); }
329名無しさん@おーぷん :2014/10/01(水)18:22:28 ID:eBi5zZ1Cc
o.token と o[token]で結果が違うのですが
if (o.token && !o[token]) こんな状況がある

let o = {};

function addtoken(token) {
 if (o.token) {
  o[token]++
 } else {
  o[token] = 1;
 }
}
function addtoken(token) {
 if (o[token]) {
  o[token]++
 } else {
  o[token] = 1;
 }
}
330名無しさん@おーぷん :2014/10/01(水)21:31:07 ID:6ispTGq22
そもそもどこがネックなのかプロファイリングで調べてるの?
正規表現でのマッチングに時間かかってるんじゃないの?
331名無しさん@おーぷん :2014/10/02(木)23:19:29 ID:y8qIbxMRz
自前のfind関数がめっちゃ遅かったです

function find(token) {
 for (let i = 0; i < tokens.length; i++) {
  if (tokens[i].token == token) return i;
 }
 return -1;
}
332名無しさん@おーぷん :2014/10/03(金)05:20:13 ID:nj8o358iv
それが遅いとなると、もう根本的に変えるしか無いだろうね
333名無しさん@おーぷん :2014/10/03(金)05:38:13 ID:S1Fgq3r2U
いえ、そこは >>328 の連想配列を使います
コードも単純ですし
あとは正規表現の所なのですが
334名無しさん@おーぷん :2014/10/03(金)18:33:22 ID:tMbxthhw2
ここが遅いです
でもここは変えません
どうしろと?
335名無しさん@おーぷん :2014/10/05(日)09:42:16 ID:fboSIb2W9
正規表現を変える気ないならどうしようもない
336名無しさん@おーぷん :2014/10/06(月)06:48:18 ID:NR3ZTrt20
正規表現部ではなくその後のより分けが遅いという話では?
337名無しさん@おーぷん :2014/10/06(月)07:07:47 ID:WuhCphXkz
Mapを使えば速くなるんじゃね
338名無しさん@おーぷん :2014/10/06(月)07:31:56 ID:TuuSRFaWy
Objectより速いとは書いてないけど

Map | MDN
https://developer.mozilla.org/ja/docs/Map#Objects_and_maps_compared
>An Object has a prototype, so there are default keys in the map. However,
>this can be bypassed using map = Object.create(null).
>The keys of an Object are Strings, where they can be any value for a Map.
>You can get the size of a Map easily while you have to manually keep track of size for an Object.
339名無しさん@おーぷん :2014/10/06(月)17:16:55 ID:JrO05PSfv
Mapは確かに探査自体は早いが、例えば>>329を再現しようと思ったらgetとsetメソッドを呼び出さないといけないし、トータルでは改善しないだろう。
結局配列にオブジェクトを入れるとか、そういったのがもうダメ。どうにか1次元の数値配列にしなきゃ。
もし本当に数が多いようだとメモリアクセスの時間が問題になってくるから、小さな型付数値配列も考える。
340名無しさん@おーぷん :2014/10/07(火)22:13:19 ID:PW6EA0na5
ES6のclass構文ようやくまとまったか。
JSにclass入れるのに十何年もかかったわ。
341名無しさん@おーぷん :2014/10/11(土)06:24:23 ID:rTA8XaAcp
JavaScriptでは、ローカルファイルの読み書きの標準的な手法は用意されていないのですか?
342名無しさん@おーぷん :2014/10/12(日)04:20:02 ID:FdxCfA0zZ
JS自身には無い。
環境によって提供される。
343名無しさん@おーぷん :2014/10/12(日)09:37:49 ID:WDIjvtbPD
不便ですね
仕様を提供して、個々の環境が実装するようにしてほしいわ
344名無しさん@おーぷん :2014/10/12(日)19:43:54 ID:Bth6glGvk
スクリプト言語なんだからそこら辺はホストが提供するのが自然
そのおかげでNodeにも採用されたし、昨今いろんなマクロ言語として活躍してるんだから。
345名無しさん@おーぷん :2014/10/13(月)14:52:17 ID:k9OsdSips
まあ慌てることはない。
Web APIのStream APIとES7のObservablesをベースにES8辺りでFileの扱いが入る可能性は低くはない。
346名無しさん@おーぷん :2014/10/19(日)15:30:35 ID:0BcXYpX55
お前らがJSを適当に使ってきたせいで仕様策定に支障が出まくってる
https://esdiscuss.org/topic/array-prototype-values-is-not-web-compat-even-with-unscopables
互換性のためだけに@@unscopablesとかいうマジキチなもの導入したのにそれでもダメときた。
ES7のArray。prototype.containsもお前らのせいで導入できない。
だからあれほどinはやめてhasOwnPropertyを使えと言ってきたのに。
もうJSの未来はグチャグチャ。一体どうしてくれるんだよ。
347名無しさん@おーぷん :2014/10/23(木)12:11:27 ID:GxH7wbbRm
46バイト目のDWORD型の整数が欲しいのですが、エラーが出ます。
どうすりゃいいんですか?

let buf = new ArrayBuffer(100);
let u8 = new Uint8Array(buf);
let u32 = new Uint32Array(buf, 46, 1); // Exception: invalid arguments
//let u32 = new Uint32Array(buf, 40, 1); // 問題ない
348名無しさん@おーぷん :2014/10/23(木)15:03:08 ID:ucFD3dV3m
エラーの分かりやすいChromeのコンソールで試せば直ぐに分かるよ。
正しくはこう
let u32 = new DataView(buf).getUint32(46)
349名無しさん@おーぷん :2014/10/24(金)07:25:22 ID:QV5uxMtB6
どうもです
なるほど、これか

JavaScriptプログラミング講座【ArrayBuffer クラスについて】
http://hakuhin.jp/js/array_buffer.html#ARRAY_BUFFER_VIEW_RW
■アライメント(バイト境界)について
 
第02引数と第03引数は、アライメント(バイト境界)を守る必要があります。
 
違反した場合、エラーが発生します。
 
例えば、Uint16Array クラスを使用する場合、
2 の倍数 (2,4,6,8,10,12 ...) である必要があります。
350名無しさん@おーぷん :2014/10/24(金)07:29:52 ID:QV5uxMtB6
リトルエンディアンのデータは
dv.getUint16(0, true);
で読まないとダメなのね

let buf = new ArrayBuffer(2);
let u8 = new Uint8Array(buf);
u8[0] = 1;
u8[1] = 0;
let dv = new DataView(buf);
let u16 = dv.getUint16(0, true);

console.log(u16);
351名無しさん@おーぷん :2014/10/24(金)13:59:41 ID:6U2WIfWh9
型付配列にBitArrayがないのがもどかしい
352名無しさん@おーぷん :2014/10/25(土)15:58:13 ID:q9qj8k0wo
早くES7が使いたい
353名無しさん@おーぷん :2014/10/25(土)22:13:28 ID:5SXL2BQ8h
これで -1 を出すにはどうしたらよいのでしょう?

console.log(parseInt("0xFFFFFFFF")); // 4294967295
354名無しさん@おーぷん :2014/10/25(土)22:38:54 ID:5SXL2BQ8h
普通に足したら-1になっちゃった
どう解釈したらよいのか

console.log(255); // 255
console.log(255 + (255 << 8)); // 65535
console.log(255 + (255 << 8) + (255 << 16)); // 16777215
console.log(255 + (255 << 8) + (255 << 16) + (255 << 24)); // -1
355名無しさん@おーぷん :2014/10/25(土)23:04:16 ID:5SXL2BQ8h
これが出来ないっす

function arrayToUint32(a, pos, littleEndian) {
if (littleEndian) {
return a[pos] + (a[pos+1] << 8) + (a[pos+2] << 16) + (a[pos+3] << 24);
} else {
return (a[pos] << 24) + (a[pos+1] << 16) + (a[pos+2] << 8) + a[pos+3];
}
}

// 0xFFFFFFFF が欲しい
console.log(arrayToUint32([255,255,255,255], 0, true)); // -1
356名無しさん@おーぷん :2014/10/25(土)23:22:15 ID:dPPWO4J6Z
ヒント
ビット演算は基本は符号付き32ビット
357名無しさん@おーぷん :2014/10/26(日)03:38:32 ID:HdmcJR26N
function arrayToUint32(a, pos, littleEndian) {
return new DataView(new Uint8Array(a).buffer).getUint32(pos, littleEndian)
}
358名無しさん@おーぷん :2014/10/26(日)06:03:51 ID:tesYlpovL
普通の配列でも出来ちゃうわけね

Uint8Array - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Typed_arrays/Uint8Array
>array
> 新たな ArrayBuffer にコピーを行う、任意の型付き配列タイプの (Int32Array のような) オブジェクト、
>または特定のタイプのオブジェクトがひと続きになったものです。

普通の配列は、この「特定のタイプのオブジェクトがひと続きになったもの」
になるわけですか。
359名無しさん@おーぷん :2014/10/26(日)14:55:03 ID:6h5OKqtXo
普通の配列を指定して変換できないと利便性だだ下がりだからな
360名無しさん@おーぷん :2014/10/30(木)09:32:20 ID:OwQFT8gKf
HTML5勧告おめでとう
361名無しさん@おーぷん :2014/10/30(木)10:04:43 ID:fjY0iFeEZ
勧告来たな
W3C、HTML5勧告を公開
http://codezine.jp/article/detail/8243
362名無しさん@おーぷん :2014/10/30(木)10:16:10 ID:kisQ1Ycx3
ついにFRAMEが廃止されるってこと?
363名無しさん@おーぷん :2014/10/30(木)14:57:32 ID:3ZkEZaV8n
そういう話ではない。
プロセス自体に価値がある。
364名無しさん@おーぷん :2014/11/01(土)16:01:52 ID:Vpj6WRHvJ
class構文とな……
http://js-next.hatenablog.com/entry/2014/11/01/034607
365名無しさん@おーぷん :2014/11/02(日)04:31:42 ID:lrDVE3iJq
Firefox33ですけど、曜日が合いません

Date.getDay - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay
getDay が返す値は各曜日に対応する整数です。日曜日が 0、月曜日が 1、火曜日が 2、という対応です。

Date - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
new Date(year, month, day [, hour, minute, second, millisecond])

let Day = '日月火水木金土';
let d = new Date(2014, 9, 1);
console.log(d.getDay()); // 3
console.log(Day[d.getDay()]); // 水 → 2014年9月1日は月曜日です
console.log(d.toLocaleString()); // 2014/10/1 0:00:00
console.log(d.toDateString()); // "Wed Oct 01 2014"
console.log(d.getUTCDay()); // 2 ?? わけわかめ
366365 :2014/11/02(日)04:32:31 ID:lrDVE3iJq
わかりました
month は 0 が1月、1 が2月なんですね

Date - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
month
月を表す整数値です。1月は0から始まり11は12月です。
367名無しさん@おーぷん :2014/11/02(日)04:44:46 ID:lrDVE3iJq
JavaのCalendarのMONTHはなぜ0から始まるのですか 【OKWave】
http://okwave.jp/qa/q5065546.html
>String MONTH_TABLE[] = {"JANUARY","FEBRUARY","MARCH"・・・
>と考えればよろしいかと
368名無しさん@おーぷん :2014/11/02(日)04:59:55 ID:lrDVE3iJq
Delphiは1~12

System.SysUtils.EncodeDate - RAD Studio API Documentation
http://docwiki.embarcadero.com/Libraries/XE6/ja/System.SysUtils.EncodeDate
Month の有効な値は 1 から 12 までです。

System.DateUtils.MonthOf - RAD Studio API Documentation
http://docwiki.embarcadero.com/Libraries/XE6/ja/System.DateUtils.MonthOf
MonthOf 関数を呼び出すと,指定された TDateTime 値で表された月を取得できます。
MonthOf は,1 ~ 12 の範囲の値を返します
369名無しさん@おーぷん :2014/11/02(日)05:05:31 ID:lrDVE3iJq
C言語が0~11なんだな
Cは配列を1から始めることが出来ないから

Pascalだとこんな風に出来る

PASCAL 講座
http://lupus.is.kochi-u.ac.jp/shiota/pascal2004/L04.html
var x:array[-3..3] of real;
と宣言すると x は x[-3],x[-2],..., x[3] の7つの実数からなる配列となる。
370名無しさん@おーぷん :2014/11/02(日)05:16:37 ID:lrDVE3iJq
Javaは0~11

Date (Java Platform SE 6)
http://docs.oracle.com/javase/jp/6/api/java/util/Date.html
月は 0 〜 11 の整数で表されます。 0 は 1 月、1 は 2 月、そして 11 は 12 月を意味します。
371名無しさん@おーぷん :2014/11/02(日)05:22:01 ID:lrDVE3iJq
C#は1からだね。 Delphi作った人が作ったからかな
C++でも、.NETのDateTime関数を使うと、1からになる。

DateTime コンストラクター (Int32, Int32, Int32) (System)
http://msdn.microsoft.com/ja-jp/library/xcfzdy4x(v=vs.110).aspx
month
型 : System.Int32
月 (1 から 12)。
372名無しさん@おーぷん :2014/11/02(日)10:29:20 ID:lUSCNY9Qt
画像にモザイクかけるコードを書いた後に簡単な方法を知ってワロタ
373名無しさん@おーぷん :2014/11/02(日)21:41:45 ID:WXiFIK9Ek
ぼかすだけならクソ簡単
374名無しさん@おーぷん :2014/11/10(月)08:48:33 ID:xiO8Ppcyq
Webコンソール?JavaScritpコンソール?で教えてください

>document.write("aa")
とするだけなのですが
ChromeではエラーがなくてFirefoxで以下のエラーになります
エラーにならないようにするにはどうしたらいいでしょうか
http://img.open2ch.net/p/tech-1372638049-374.png
375名無しさん@おーぷん :2014/11/10(月)13:12:14 ID:vyipTByZJ
document.writeなんて微妙なシロモノを使おうとするとそんなこともある。
使わなければいい。
376名無しさん@おーぷん :2014/11/10(月)14:05:53 ID:UyEI0tAH1
test.htmlなんぞ作らなくても、
Firefoxなら、shift + F4 でスクラッチパッドが出るよ
377名無しさん@おーぷん :2014/11/10(月)18:24:57 ID:xiO8Ppcyq
>>375
微妙なものと言われても・・・
表示させるには避けては通れないものかと。
378名無しさん@おーぷん :2014/11/10(月)18:26:24 ID:xiO8Ppcyq
>>376
ありがたい情報でした
ファイルから読取して実行できないものかと思ってたところです
そのスクラッチパッドで解決です
379名無しさん@おーぷん :2014/11/10(月)19:24:30 ID:vyipTByZJ
どうしてエラーになっているのかを考えない。解決できれなんでもいい。
愚かなeval信者と同じだな。
380名無しさん@おーぷん :2014/11/11(火)08:17:47 ID:WXkIEF59Q
ヘンなレスが出たらスルーするってのは簡単だけど
変なエラーメッセージについてはできるだけ解決したいなぁ

>>374の解決方法わかる人だれか教えて
381名無しさん@おーぷん :2014/11/11(火)17:55:48 ID:9b6W8gBi3
解決方法:document.writeを使わない
理由;document.writeはevalのように意図しない結果を招き得るため、制限されてのエラーだから
382名無しさん@おーぷん :2014/11/11(火)18:09:28 ID:wPQY2HnuW
document.innerHTML = "aa";
383名無しさん@おーぷん :2014/11/11(火)18:11:40 ID:wPQY2HnuW
こっちだ

document.body.innerHTML = "aa";
384名無しさん@おーぷん :2014/11/11(火)21:54:25 ID:WXkIEF59Q
>>383
対応策を示してくれて
どうもありがとう
385名無しさん@おーぷん :2014/11/12(水)06:57:11 ID:5RDmsZXuf
>>374
ここに問題とされているようだ
https://bugzilla.mozilla.org/show_bug.cgi?id=663406
386名無しさん@おーぷん :2014/11/17(月)08:21:04 ID:u6vdSJJHq
FireFox使ってんだけど
webコンソールのプロファイラってどういう時に使うの?
387名無しさん@おーぷん :2014/11/17(月)19:41:31 ID:u6vdSJJHq
>>386
これは聞いても無駄のようだ
388名無しさん@おーぷん :2014/11/18(火)03:53:59 ID:K5KNY7UIR
メモリリーく調査
389名無しさん@おーぷん :2014/11/18(火)08:01:25 ID:siuXwEVY7
// これは出来ました
Date.prototype.getDayStr = function() {
return "日月火水木金土"[this.getDay()];
}
let d = new Date();
document.title = d.getDayStr();

// 他と区別するために、.ex をつけて呼び出したいのですが、
// 定義はどうすればよいのでしょう?
Date.prototype.ex = {
getDayStr: function() {
// Exception: this.getDay is not a function
return "日月火水木金土"[this.getDay()];
}
}

document.title = d.ex.getDayStr();
390名無しさん@おーぷん :2014/11/18(火)08:08:10 ID:3WqoJo0ER
>>389
それJavaScript?
コンソールから?
391名無しさん@おーぷん :2014/11/18(火)08:08:52 ID:siuXwEVY7
スクラッチパッドからですよ
392名無しさん@おーぷん :2014/11/18(火)08:17:19 ID:3WqoJo0ER
>>391
この画面でshift+f4でスクラッチパッド起動して
389コピペして実行したらエラーになるんだけど・・
393名無しさん@おーぷん :2014/11/18(火)08:19:04 ID:3WqoJo0ER
スクラッチパッドってFirefoxだけだよね?
394名無しさん@おーぷん :2014/11/18(火)08:21:08 ID:siuXwEVY7
>>393
うん

>>392
これだけならどう? もしかして日本語がダメとか?

Date.prototype.getDayStr = function() {
return "日月火水木金土"[this.getDay()];
}
let d = new Date();
document.title = d.getDayStr();
395名無しさん@おーぷん :2014/11/18(火)08:21:51 ID:siuXwEVY7
IEだと、let を var に変える必要があったはず
396名無しさん@おーぷん :2014/11/18(火)08:26:45 ID:3WqoJo0ER
>>394
それだけだと動いた
ちょっと感動した
初心者なんで
prototypeって初めて使った
面白い

letは省略可能なんだよね?
397名無しさん@おーぷん :2014/11/18(火)08:49:40 ID:siuXwEVY7
意図しない変数へのアクセスを防ぐために、
私は省略しません。
398名無しさん@おーぷん :2014/11/19(水)02:01:41 ID:oOv7JlSlZ
>>389
function getDayStr() {
 return "日月火水木金土"[this.getDay()];
}

Object.defineProperty(Date.prototype, 'ex', {
 get: function () {
  this.getDayStr = getDayStr;
  return this;
 },
 configurable: true,
 enumerable: false
});

var d = new Date();
document.title = d.ex.getDayStr();

でもまあ、prototypeオブジェクトを拡張するのではなく
wrapperやutilityとして定義することを考えた方がいいと思う
399名無しさん@おーぷん :2014/11/19(水)04:22:44 ID:RxM0OAUHT
プロトタイプの拡張はすべきでない。
昨今それのせいでES.nextの策定に次々問題が出てきてる。

どうしてもやりたいのならサブクラスを作るべき。

class XDate extends Date {
getDayStr() { return "日月火水木金土"[this.getDay()] }
}
400名無しさん@おーぷん :2014/11/19(水)05:18:46 ID:vxEEoO2WD
仕様策定でユーザが書いたコードとの互換性って考える必要があんのかね
prototypeの拡張は互換性のリスクを知った上でやってるはずだが
401389 :2014/11/19(水)13:33:48 ID:LXDxeqhzg
>>398
ソースはFirefoxのスクラッチパッドで問題なく動きました
prototype拡張がJavaScriptの流儀かと思ったのですが、
違いましたか。

>>399 Firefoxはまだ class が使えませんでした

//Exception: class is a reserved identifier
class XDate extends Date {
getDayStr() { return "日月火水木金土"[this.getDay()] }
}

let d = new XDate();
document.title = d.getDayStr();
402名無しさん@おーぷん :2014/11/19(水)13:39:55 ID:LXDxeqhzg
普通にこんなんで良い訳ですね

var My = {};
My.getDayStr = function(date) {
return "日月火水木金土"[date.getDay()];
}

var d = new Date();
document.title = My.getDayStr(d);
403名無しさん@おーぷん :2014/11/19(水)16:20:18 ID:Igh8RtvxT
なんで標準API使わないの?

var My = {
getWeekday: Intl.DateTimeFormat('ja',{weekday:'short'}).format
}

var d = new Date
document.title = My.getWeekday(d)
404名無しさん@おーぷん :2014/11/20(木)06:15:39 ID:iGv4B7mPX
そんなのがあるとは知らなかった

ところで、weekdayって平日って意味じゃないの?
マイクロソフトの辞書では曜日になってるけど

weekdayの意味 - 英和辞典 Weblio辞書
http://ejje.weblio.jp/content/weekday

Weekday - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Weekday
>Weekday is sometimes confused with calendar day, which is any of the days of the week.
405名無しさん@おーぷん :2014/11/20(木)13:40:40 ID:NZnqeTnJ0
逆に曜日の和英を考えてみるといい。
406名無しさん@おーぷん :2014/11/29(土)04:01:04 ID:HZW
>>404
workday
407名無しさん@おーぷん :2014/11/29(土)04:04:06 ID:HZW
>>404
平日という意味は、ちゃんとありますね!
408名無しさん@おーぷん :2014/11/29(土)04:07:25 ID:HZW
What day is it today? きょうは、何曜日ですか
What day of the week is it today? きょうは、何曜日ですか
409名無しさん@おーぷん :2014/11/29(土)05:09:39 ID:vHN
dayだって普通は1日とか日中とかいう意味になる。
day自体に曜日という意味は無い
day -> day (of weak)

weakday -> weakDay -> day (of) week
かの違いだけ
410名無しさん@おーぷん :2014/11/30(日)00:30:18 ID:oEf
weakは弱い。
weekは週。
間違ってる。
411名無しさん@おーぷん :2014/11/30(日)01:18:50 ID:5i6
そこに気がつくとはお目が高い
412名無しさん@おーぷん :2014/12/03(水)18:31:13 ID:nYj
SWにXOCが導入されそうだな。
ただでさえ夢がつまってるのにとんでもないことになるな
https://docs.google.com/document/d/16iX4Tj4i0dL6CRnLYx3ekLQ5h2GVPDWuAClsI9CLg04/edit#

だけど便利になるってことは危険も増える
SWは一度サイトやルーターハッキングで仕込まれたら、その後回復させても脅威が残り続ける問題があるが、
XOでなければまだ対処はあるもののXOだと元サイトがSWを無効にできないので、hostsを永久に書き換えられたかのような状態になってしまう。
ユーザーの判断方法としてはhttpsの場合は証明書の発行先が期待しているサイトのものかどうか検証するしか無い。
httpの場合はお手上げ。
413名無しさん@おーぷん :2014/12/08(月)20:34:37 ID:0FI
これは全てのJSer必見
https://drive.google.com/file/d/0B4PVbLpUIdzoUjdmSkFtVVozQnM/view
今年のPromiseのようにObservable来年後半辺りから一気に広まりだすと思う
414名無しさん@おーぷん :2015/02/09(月)22:51:22 ID:XiZ
Googleは"use strict"的な新モードを追加することでJSを拡張、校正するつもりらしい。
http://www.mpi-sws.org/~rossberg/papers/JSExperimentalDirections.pdf
この取り組みがうまく行けば来年の今頃にはTypeScriptよりも快適な環境が手に入ってるな。

特に上半期に実装予定のSansScriptの方は人力コーディングが困難でユースケースがかなり限定的だった、
asm.jsのグレードアップ版として大いに期待できる。皆も応援しよう。
415名無しさん@おーぷん :2015/02/19(木)10:17:18 ID:WS8
Firefoxでこのコードが
"writeAtomic error:DataCloneError: The object could not be cloned."
を出すんですけど、
callback関数を渡すには、どうしたらよいのでしょう?
「そのオブジェクトはクローン不可能です。」って意味らしいんですけど。

function asyncWriteText(filename, text, charset, callback) {
 Components.utils.import("resource://gre/modules/osfile.jsm");
 OS.File.writeAtomic(filename, text, {encoding:charset || "utf-8"}).then(
  function() { if (callback) callback();},
  function(e) { console.error('writeAtomic error:' + e); }
 );
}

asyncWriteText("E:\\test.txt", "TEST\n", function() {});
416名無しさん@おーぷん :2015/02/19(木)11:07:03 ID:LdN
引数をよく見るんだ

asyncWriteText(filename, text, charset, callback)
asyncWriteText("E:\\test.txt", "TEST\n", function() {});
417名無しさん@おーぷん :2015/02/19(木)11:50:39 ID:WS8
あ、、、
418名無しさん@おーぷん :2015/02/19(木)11:53:35 ID:WS8
これで出来ました

asyncWriteText("E:\\test.txt", "TEST\n", "", function() {});
419名無しさん@おーぷん :2015/02/22(日)00:20:20 ID:EfN
disable = true で禁止
hidden = true で非表示
ってわかりにくい

enable = false で禁止
visible = false で非表示
の方がわかりやすい
420名無しさん@おーぷん :2015/02/22(日)05:07:31 ID:CWU
>>419
デフォルトがfalseの方が自然じゃね?
421名無しさん@おーぷん :2015/02/22(日)05:41:17 ID:EfN
Firefoxで、
gContextMenu.isTextSelected;
gContextMenu.onLink;
とか出てくるよ

gContextMenu.textUnselected;
gContextMenu.notOnLink;
じゃないです
422名無しさん@おーぷん :2015/02/22(日)05:43:09 ID:EfN
hasOwnProperty もあるな

hasOwnProperty と disabled を組み合わせた if 文なんてわけわかめですよ、きっと
423名無しさん@おーぷん :2015/02/22(日)05:56:00 ID:CWU
>>421
デフォルトでは選択されてない(isTextSelected=false)、リンクじゃない(onLink=false)じゃないの?
>>422
メソッドの返り値はまた別な気がするが、あえて言うならhasOwnPropertyのデフォルトはfalseでしょ

なんかデフォルトという言葉の認識にズレがある気がする
424名無しさん@おーぷん :2015/02/23(月)07:34:11 ID:qOk
デフォルトをfalseにするために、変数名、プロパティー名を調整してるってこと?
425名無しさん@おーぷん :2015/02/23(月)08:19:42 ID:KGc
そういうことだな
426名無しさん@おーぷん :2015/02/24(火)00:56:35 ID:XFt
XHRみたいに超メジャーなAPIでもデフォルトtrueになってるけどね。
427名無しさん@おーぷん :2015/02/24(火)04:39:05 ID:mbn
XMLHttpRequestのopenメソッドの引数はデフォルトがtrueの珍しい例だな
なんでそんな設計にしたんだか
428名無しさん@おーぷん :2015/02/24(火)05:03:21 ID:BAb
マイクロソフトが考えたからかな

XMLHttpRequest - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest#open()
async
非同期で操作を実行するかを示す、オプションの真偽値です。デフォルトでは true に設定されています。

XMLHttpRequest - Wikipedia
http://ja.wikipedia.org/wiki/XMLHttpRequest
>XMLHttpRequestは、マイクロソフトがOutlook Web Access 2000のダイナミックHTMLによるウェブインターフェースに活用するため、
>1999年公開のInternet Explorer 5においてActiveXオブジェクトとして実装したのが始まりである[1]。
429名無しさん@おーぷん :2015/02/24(火)05:38:31 ID:mbn
確かにそれはあるかも
MSの独自仕様ってwindow.eventとか微妙なのがあるからな
430名無しさん@おーぷん :2015/02/24(火)12:28:14 ID:XFt
「async = true」でなく「sync = false」だったとしても少し違和感がある。
今でこそ非同期APIが当たり前となったけど、そもそも同期ではなく非同期をデフォルトというのは先進的じゃね。
431名無しさん@おーぷん :2015/02/24(火)21:30:42 ID:BAb
JavaScript の文字列の split って他と違うんだな
最後の要素に文字列の残り全部を含めてくれない
Java、PHP、Ruby は含める

String.prototype.split() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split
var myString = "Hello World. How are you doing?";
var splits = myString.split(" ", 3);
print(splits);
Hello, World., How

String (Java Platform SE 6)
https://docs.oracle.com/javase/jp/6/api/java/lang/String.html#split(java.lang.String,%20int)
配列の最後のエントリには、最後にマッチした区切り文字以降の入力シーケンスがすべて含まれます。
"boo:and:foo".split(":", 2) = ["boo", "and:foo"];

PHP: split - Manual
http://php.net/manual/ja/function.split.php
limit が指定された場合、返される配列には 最大 limit の要素が含まれます。
この場合、 最後の要素には string の残りの部分が全て 入っています。

split (String) - Rubyリファレンス
http://ref.xaio.jp/ruby/classes/string/split
s = "hello,world,ruby"
p s.split(",", 2)
["hello", "world,ruby"]
432名無しさん@おーぷん :2015/02/24(火)22:37:38 ID:BAb
これも違う

var s = "a=b=c";
console.log(s.split("=", 0)); // []
console.log(s.split("=", undefined)); // ["a","b","c"]

431によると、Javaだと、
>n がゼロの場合、このパターンの適用回数と配列の長さは制限されませんが、
>後続の空の文字列は破棄されます。

Javaですべてを取得したい場合、マイナスを入力するらしい。
433名無しさん@おーぷん :2015/02/25(水)03:14:18 ID:bnS
そうみたいやな
434名無しさん@おーぷん :2015/03/04(水)09:15:41 ID:FVv
正規表現の */ でコメントが閉じられるのを回避する方法はありますか?
435名無しさん@おーぷん :2015/03/04(水)21:31:52 ID:U1C
>>434
冗長になるけど
/*(?:)/
とか
436名無しさん@おーぷん :2015/03/04(水)21:48:18 ID:qif
実際の場面を考えたら、コメントアウト中のソースに手を加えるってのは良い解決方法とはいえないと思う。
437名無しさん@おーぷん :2015/03/05(木)06:23:00 ID:NBV
/* */ だけじゃなくて、 Pascal風の (* *) もサポートしてくれたらいいのに
438名無しさん@おーぷん :2015/03/05(木)07:11:06 ID:MIs
現実的には一行コメントにするってことになるだろうね
エディタの機能で一括でやればそんなに手間じゃないし
439名無しさん@おーぷん :2015/03/05(木)21:23:45 ID:ad0
jsに限らんけど一時的にディセーブルしたいときとかは
コメントにせずに
if (false) {
}
で囲んでしまう
440名無しさん@おーぷん :2015/03/08(日)06:00:11 ID:DSl
if(false)
{
}
ってやれば、if(false) をコメントアウトするだけで復帰できるけど、
でも、色が変わらないから、コメントアウトしたかどうかわかりにくい。

悩んでいる人はいないみたいだ

regular expression "comment out" - Google 検索
https://www.google.co.jp/search?q=regular+expression+%22comment+out%22
441名無しさん@おーぷん :2015/03/08(日)06:01:50 ID:DSl
あと、new RegExp(".*") 使えば */ は回避できるけど
442名無しさん@おーぷん :2015/03/08(日)23:44:15 ID:0JG
テンプレートリテラルで囲めば色も変わるしいいんじゃない?
443名無しさん@おーぷん :2015/03/09(月)08:58:35 ID:520
色変わりました

if (false) {`
 let m = "abc".match(/.*/);
 console.log(m);
`}

Template strings - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings

テンプレートリテラルが実装された - JS.next
http://js-next.hatenablog.com/entry/2014/11/22/042055
444名無しさん@おーぷん :2015/03/09(月)09:05:55 ID:520
FirefoxのCodeMirrorエディタでスタイルを紺の太字に

.cm-string-2 {color: navy !important; font-weight: bold !important; }
445名無しさん@おーぷん :2015/03/09(月)09:27:13 ID:520
もしかしてこれでいいのかもしれない

let m = "abc".match(".*");
console.log(m); // [abc]

String.prototype.match() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match
>RegExp オブジェクトではないオブジェクト obj が渡された場合、
>new RegExp(obj) による RegExp オブジェクトへの暗黙的な変換が行われます。
446名無しさん@おーぷん :2015/03/09(月)12:30:38 ID:520
テンプレートリテラルなんて使うのか?こんなもん
と思ったけど、\ で連結しなくていいし、 もちろん " " + で連結もしなくていい

iniファイルとか、テキストのデータファイルをそのまま埋め込めるのは便利だ
447名無しさん@おーぷん :2015/03/09(月)12:40:08 ID:520
バッククオートはプログラミング言語でほとんど使われていなかったから
複数のプログラミング言語に対応した自作コード補完システムの
コメントに使ってたのに残念だわ

プログラミング言語記号比較(Hishidama's Programming language symbol)
http://www.ne.jp/asahi/hishidama/home/tech/lang/symbol.html#%60
448名無しさん@おーぷん :2015/03/09(月)12:41:19 ID:520
中で${}みたいなの使うなら、` じゃなくてもいいような気がするんだけどな
449名無しさん@おーぷん :2015/03/09(月)22:00:00 ID:520
そのままってわけじゃないのか

var s = `e:\test.txt`;
document.title = s; // e:est.txt
450名無しさん@おーぷん :2015/03/09(月)22:48:10 ID:3un
String.raw`e:\test.txt` //=> "e:\test.txt"
451名無しさん@おーぷん :2015/03/10(火)01:54:00 ID:k1X
できました
452名無しさん@おーぷん :2015/03/13(金)16:24:08 ID:NN6
文字列操作でLeftやRightが付くと、Bidiの時、ややこしくなりませんか?
やっぱり避けるべきだよね

String.prototype.trimLeft() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft

Javaには無いっぽい
String (Java Platform SE 7)
https://docs.oracle.com/javase/jp/7/api/java/lang/String.html

C#はあるね
String.PadLeft メソッド (Int32) (System)
https://msdn.microsoft.com/ja-jp/library/0zk6ydzx(v=vs.110).aspx
>PadLeft(Int32) メソッドは、返された文字列の先頭に文字を埋め込みます。
> つまり、右から左に記述される言語で使用すると、文字列の右側が埋められることになります
453名無しさん@おーぷん :2015/03/13(金)21:51:23 ID:AHc
trimLeftとかはあくまで独自実装だから。
454名無しさん@おーぷん :2015/03/13(金)21:57:12 ID:NN6
googleも使ってるにゃ

strings - The Go Programming Language
http://golang.org/pkg/strings/
func TrimLeft(s string, cutset string) string
455名無しさん@おーぷん :2015/03/13(金)23:09:04 ID:OhA
名前をtrimStartとかに変えればいいんじゃね
456名無しさん@おーぷん :2015/03/13(金)23:09:48 ID:VQX
ECMA標準にないでしょ。
あくまで独自実装だから。
457名無しさん@おーぷん :2015/03/14(土)11:30:37 ID:Dir
startsWith endsWith があるから、
標準になるなら、>>455ですかね
458名無しさん@おーぷん :2015/03/14(土)21:21:20 ID:VOT
動詞とstartsを組み合わせるのは変。
trimHead、trimTailの方が自然。
459名無しさん@おーぷん :2015/03/15(日)15:16:03 ID:JoU
ヘッドラインを開いているところで、↓のコードで ok が出ないのですが
どこが問題なのでしょう? エラーも出ません。
x.responseText; は取得できました。

おーぷん2ちゃんねるヘッドライン
http://open2ch.net/headline.cgi

function asyncReadDoc(uri, onload) {
 var x = new XMLHttpRequest();
 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); }
 if (onload) x.onload = function () { onload(x.responseXML); }
 x.open("GET", uri, true);
 x.responseType = "document";
 x.send(null);
}

asyncReadDoc("http://open2ch.net/headline.cgi", function(doc) {
 document.title = 'ok';
});
460名無しさん@おーぷん :2015/03/15(日)20:43:11 ID:mCn
FirefoxとChromeで試したけど両方titleがokになったよ
461名無しさん@おーぷん :2015/03/15(日)21:38:01 ID:JoU
あ、私もokでました
しかも、ここ表示中でも読み込めました
462名無しさん@おーぷん :2015/03/15(日)21:40:15 ID:JoU
したらば表示中でも読み込めたぞ
クロスなんちゃらでダメな筈では?

おーぷん2ちゃんねる避難所
http://jbbs.shitaraba.net/internet/18643/
463名無しさん@おーぷん :2015/03/26(木)18:57:48 ID:cZd
JQuerでフレーム内の要素を取得するにはどうすればよいのでしょう?
メニュー表示中に右側のフレームの kopipe TextArea を取得したいんですけど

http://open2ch.net/menu/

var e = window.frames[1].document.getElementById("kopipe");
e.value = e.id; // kopipe
e.value += "\n" + $("#kopipe", top.frames[1].document.body); // null
e.value += "\n" + $("#kopipe", top.frames[1].document); // null
e.value += "\n" + $("#kopipe", top.frames[1]); // null
e.value += "\n" + $(e); // 例外

下の二つのリンク先にあるやり方ではダメでした

HTML - <frame>の中にある要素をjQueryのセレクタで取得する方法 - Qiita
http://qiita.com/noobar/items/df2b67d371fcda63ccd5

javascript - How to access frame (not iframe) contents from jQuery - Stack Overflow
http://stackoverflow.com/questions/2921957/how-to-access-frame-not-iframe-contents-from-jquery

ID Selector (“#id”) | jQuery API Documentation
http://api.jquery.com/id-selector/
464名無しさん@おーぷん :2015/03/27(金)04:15:34 ID:54k
流石にframeはもう使うな
465名無しさん@おーぷん :2015/05/11(月)19:19:32 ID:14B
これであってるのですかね?
空文字を split すると、要素が一つ返る

var s = "";
console.log(s.length); // 0
console.log(s.split(",").length); // 1
466名無しさん@おーぷん :2015/05/11(月)19:27:24 ID:14B
ちょsage
467名無しさん@おーぷん :2015/05/11(月)19:29:31 ID:14B
載ってたわ

String.prototype.split() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split
>注: 文字列が空であるとき、split メソッドは、空の配列ではなく、1 つの空文字列を含む配列を返します。
468名無しさん@おーぷん :2015/05/11(月)19:33:19 ID:14B
でも、
console.log(s.split("").length); // 0

は0なんやね
469名無しさん@おーぷん :2015/05/11(月)20:35:35 ID:Dja
テスト
470名無しさん@おーぷん :2015/05/11(月)20:36:06 ID:Dja
連続カキコミであがるはずだ
471名無しさん@おーぷん :2015/05/11(月)20:36:37 ID:Dja
あれ。あがらないね。
472名無しさん@おーぷん :2015/05/11(月)20:40:00 ID:14B
仕様が変わったみたい
473名無しさん@おーぷん :2015/05/11(月)20:40:25 ID:7B7
test
474名無しさん@おーぷん :2015/05/11(月)21:52:31 ID:14B
どれ
475名無しさん@おーぷん :2015/05/11(月)21:55:08 ID:cut
ageテスト
476名無しさん@おーぷん :2015/05/11(月)21:55:30 ID:cut
だめか
477名無しさん@おーぷん :2015/05/11(月)21:55:47 ID:cut
力にならなくてごめん…
478名無しさん@おーぷん :2015/05/11(月)21:57:03 ID:14B
どんまい
479名無しさん@おーぷん :2015/05/12(火)06:12:02 ID:iCZ
テスト
480名無しさん@おーぷん :2015/05/12(火)12:57:19 ID:Zmz

481名無しさん@おーぷん :2015/05/12(火)21:48:16 ID:mQ4
あがるかな?
482名無しさん@おーぷん :2015/05/12(火)21:48:30 ID:mQ4
無理かな
483名無しさん@おーぷん :2015/05/12(火)21:49:31 ID:mQ4
三回目に書き込んであがった時もあったが……
(最終あげ投稿日から一カ月未満だったが)
484名無しさん@おーぷん :2015/05/13(水)18:40:42 ID:miz
documentオブジェクトのɡetElementsByClassName("")メソッド
485名無しさん@おーぷん :2015/06/08(月)04:18:12 ID:utV
あげ
486名無しさん@おーぷん :2015/06/08(月)04:18:21 ID:utV

487名無しさん@おーぷん :2015/06/08(月)04:18:27 ID:utV

488名無しさん@おーぷん :2015/07/27(月)00:50:08 ID:YAR
age
489名無しさん@おーぷん :2015/08/12(水)21:10:09 ID:tna
JavaScriptからTCP/IPを使えたら捗るだろうなって思ったら
既に草案があるんだな

http://www.w3.org/TR/tcp-udp-sockets/
490名無しさん@おーぷん :2015/08/15(土)21:26:54 ID:Csz
パラメータにコードを書くなんてあまりスマートじゃない。
491名無しさん@おーぷん :2015/08/29(土)04:20:36 ID:eG5
ageageage
492名無しさん@おーぷん :2015/08/31(月)14:08:02 ID:qre
ChromeのFileReader遅いな
しかも1GB超えのファイルを読もうとするとクラッシュする
Firefoxだとそんなことないのに
493名無しさん@おーぷん :2015/09/05(土)04:51:22 ID:S3w
>>492
64bit版なら大丈夫
494名無しさん@おーぷん :2015/09/05(土)20:45:34 ID:513
>>493
確認したが64bit版だった
MacのChrome特有の問題なのかね
495名無しさん@おーぷん :2015/10/02(金)08:48:04 ID:Pw9
多分そう
496名無しさん@おーぷん :2015/11/04(水)15:13:16 ID:dwq
コメント付きでesprima→escodegenと通すとコメントがダブって主力されるな
これはどっちかのバグなのかフォーマットに互換性がないからなのか
497名無しさん@おーぷん :2015/11/12(木)22:48:35 ID:GIP
今なら上がる
498名無しさん@おーぷん :2015/11/14(土)19:43:09 ID:RQJ
なんで上がるん??
499名無しさん@おーぷん :2015/11/14(土)23:48:28 ID:be5
>>498
このあたりで変更があったらしいよ
http://open.open2ch.net/test/read.cgi/open2ch/1339040173/1034
500名無しさん@おーぷん :2015/11/26(木)22:00:22 ID:OTs
ES6で一番ほしい機能がmoduleなのになかなか仕様が固まらなくて悲しい
501名無しさん@おーぷん :2016/01/06(水)07:40:27 ID:Lof
traceurでモジュール使えるんだな
これでネイティブに実装しているものはそっちを使うようにしてくれれば最高なんだけどな
502名無しさん@おーぷん :2016/01/25(月)04:44:27 ID:6mv
せやな
503名無しさん@おーぷん :2016/03/18(金)19:20:10 ID:fwU
JavaScript 大人気

「給料が多いほど仕事が好き」「よく使うプログラミング言語」「開発環境」「開発者歴」「OS」など世界中の開発者の統計をまとめた「Stack Overflow Developer Survey 2016」 - GIGAZINE
http://gigazine.net/news/20160318-stack-overflow-developer-survey-results/
504名無しさん@おーぷん :2016/03/23(水)11:07:15 ID:GNN
dアニメストアが3月23日リニューアル Chrome&Edge対応やアニソン配信が拡充
http://ascii.jp/elem/000/001/137/1137421/

SilverlightからHTML5プレーヤーになって脱プライグイン化した模様
505名無しさん@おーぷん :2016/04/29(金)20:04:35 ID:D3D
Node.jsバージョン6をリリース、2016年10月からLTSフェーズへ
http://news.mynavi.jp/news/2016/04/27/284/

> ECMAScript 2015(ES6)の95%に至る機能をサポート。
506名無しさん@おーぷん :2016/05/23(月)14:26:01 ID:osZ
できるようになってた

clipboard.jsで、flashなしでクリップボードにコピーする - Qiita
http://qiita.com/satthi/items/b4123c7683b4c3d93bf4
507名無しさん@おーぷん :2016/05/23(月)14:32:38 ID:osZ
Document.execCommand()
https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
508名無しさん@おーぷん :2016/05/24(火)07:07:54 ID:x2m
clipboard.js — Copy to clipboard without Flash
https://clipboardjs.com/

https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.5/clipboard.js
509名無しさん@おーぷん :2016/06/02(木)18:46:33 ID:MvO
いつのまにかChromeのコンソールでブロック文がエラーを吐くようになった

{
var foo;
}

Uncaught SyntaxError: Unexpected identifier

勝手に()で囲んでるみたいだ

({
var foo;
})
510名無しさん@おーぷん :2016/06/06(月)16:05:10 ID:XKW
こういうのじゃなくて?

(function()
{

}
)();
511名無しさん@おーぷん :2016/06/06(月)16:08:50 ID:kka
>>510
それならエラーにならないだろ
512名無しさん@おーぷん :2016/08/29(月)20:17:35 ID:1Vr
UTFのNFC、NFDの扱いが面倒だと思ってたら、normalizeなんていう便利なメソッドがあるんだな
513名無しさん@おーぷん :2016/08/31(水)17:46:07 ID:AxP
>>512
chromeだと日本語に対応してなかった…
514名無しさん@おーぷん :2016/09/21(水)19:46:41 ID:GZz
ES6を100%サポートしたSafari 10のアップデートが来た
Firefox 49も来た
515名無しさん@おーぷん :2016/09/26(月)09:28:20 ID:aQ8
TypeScript 2.0 is now available!
https://blogs.msdn.microsoft.com/typescript/2016/09/22/announcing-typescript-2-0/

Non-nullable TypesやThe readonly Modifierなどの機能が追加
516名無しさん@おーぷん :2016/09/26(月)17:18:29 ID:Ga3
アンダース・ヘイルスバーグが設計しとるのか

TypeScript - Wikipedia
https://ja.wikipedia.org/wiki/TypeScript
>TypeScript は大規模なアプリケーションの開発のために設計されており、
>コンパイルすると JavaScript のソースコードを出力する。
517名無しさん@おーぷん :2016/10/12(水)14:39:31 ID:sAK
JavaScriptセキュリティの基礎知識:連載|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/javascript-security
518名無しさん@おーぷん :2016/10/31(月)12:12:17 ID:hTh
>>513
更新したら対応したわ
やったぜ
519名無しさん@おーぷん :2017/01/11(水)16:42:55 ID:f3Q
proposalのglobalがFirefoxのNightlyから削除されるらしい

global breaks flickr.com
https://github.com/tc39/proposal-global/issues/20#issuecomment-271647175

これはcontains->includesみたいに名前を変更する流れか
利用者の多いライブラリで一般的な変数名を使ってたら、言語仕様では使えなくなってくんですかね
520名無しさん@おーぷん :2017/01/13(金)15:45:53 ID:ALu
初心者です。よろしくお願いします。
入力チェック処理を作成しているのですが、
ネットなどを見ても正規表現によるチェックが主流で
下記のような文字コードによるチェックは見かけません。
文字コードによるチェックは何か問題があるのでしょうか?
メールアドレスや電話番号などの形式チェックに正規表現を使うのは
わかるのですが、半角英数字などの文字種のチェックにまで
正規表現を使用するのはなぜでしょうか?

下記の例は「文字コードによる半角英字チェック」です。
コードが張り付けられないので全角にしてあります。

//戻り値:true 半角英字である
function isHanAlpha(value){
  var code, result = false;
  for(var i=0, len = value.length; i < len; i++){
    result = false;
    code = ”0x” + value.charCodeAt(i).toString(16);
    result = result || (0x41 <= code && code <= 0x5A)      //半角英大文字
    result = result || (0x61 <= code && code <= 0x7A)      //半角英小文字
    if (!result){
      break;
    }
  }
  return result;
};
521名無しさん@おーぷん :2017/01/13(金)16:21:53 ID:JFe
>>520
正規表現のほうが書くのが楽だからでしょ
正規表現なら一行で済む
522名無しさん@おーぷん :2017/01/13(金)17:00:26 ID:ALu
>>521
返答ありがとうございます。
文字コード判定では何か問題があるということではないのですね。
安心しました。
523名無しさん@おーぷん :2017/01/18(水)16:48:06 ID:jzo
さよならJavaアプレット。JDK 9からWebブラウザプラグイン機能を排除
http://www.atmarkit.co.jp/ait/articles/1601/28/news095.html

一方Flashは

「Adobe Flash Player」に深刻な脆弱性 - 72時間以内に更新を
Security NEXT-2017/01/10
http://www.security-next.com/077270
524名無しさん@おーぷん :2017/01/24(火)16:52:00 ID:g03
ES6を体系的に学ぶにはどうすればいいですか?という質問にみなさんはどう答えますか?
ドットインストールとQiitaと寺テイルとstackoverflowとgithubは利用する資料としては除外で。
525名無しさん@おーぷん :2017/01/24(火)20:08:30 ID:ck9
じゃあMDNで
526名無しさん@おーぷん :2017/01/25(水)07:53:24 ID:BGA
教訓はどこへ? 32ビットIEとSafariのみ対応、Java必須のマイナンバーのポータルサイト
http://internet.watch.impress.co.jp/docs/yajiuma/1039551.html

それならネイティブアプリにしろよっていう話

国交省のwebサイトの証明書がおかしかったり、政府はITほんとダメだな
https://www.mlit.go.jp/
527名無しさん@おーぷん :2017/01/26(木)00:18:10 ID:Otg
>>526
何処のベンダーがやっちまったんでしょうね…
528名無しさん@おーぷん :2017/02/18(土)11:24:41 ID:wRo
既存のx86/ARM CPUほぼ全てに通用するJavaScript攻撃が発見される
~アドレス空間配置のランダム化を突破
http://pc.watch.impress.co.jp/docs/news/1044822.html

これによって、バッファオーバーフローがあった場合の危険性が高まる
529名無しさん@おーぷん :2017/03/08(水)09:37:14 ID:V3s
Firefox 52 にしたら、ゆっくり動かしたときにwheelイベントが発生しなくなった
マウスジェスチャーが使いにくくなって困るんだが何なのこれ
530名無しさん@おーぷん :2017/06/27(火)23:35:11 ID:UEW
>>529
更新したら直ってたわ
531名無しさん@おーぷん :2017/07/26(水)07:56:15 ID:E8O
Adobe、Flashを2020年に廃止。ChromeやFirefox、Edgeなど段階的にサポート終了
http://av.watch.impress.co.jp/docs/news/1072470.html

やったね
532名無しさん@おーぷん :2017/07/28(金)09:16:07 ID:jzp
chromeを更新したらこんなエラーが出た

更新できませんでした(エラー: 12)
エラーの詳細:2017-07-28 09:09:03.448 GoogleSoftwareUpdateAgent[2028/0x700006b9c000] [lvl=3] -[KSAgentApp(KeystoneDelegate) updateEngineFinishedUpdate:errors:wantsReboot:] Finished with com.google.Chrome : errors 2, should reboot: NO
バージョン: 59.0.3071.115(Official Build) (64 ビット)

このあと再起動したら更新できた
今までは再起動を促すメッセージが出てたのになぜエラーを表示したのか
533名無しさん@おーぷん :2017/07/28(金)09:17:29 ID:jzp
あれ、上がったw
忍法帖無いのに
534名無しさん@おーぷん :2017/08/17(木)06:42:37 ID:8oY
Firefoxの自動更新が来た
55が公開されてから自動更新が遅れてたのはバグフィックスが影響しているみたいだ
535名無しさん@おーぷん :2017/08/17(木)06:44:45 ID:8oY
>>534
Async generator methodsがサポートされたらしいがSyntaxErrorになるな
flagがないと使えないのかな

var obj4 = {
f: async function* () {
yield 1;
yield 2;
yield 3;
}
};
536名無しさん@おーぷん :2017/08/20(日)20:18:02 ID:eYb
>>535
Symbol.asyncIteratorはあるな
537名無しさん@おーぷん :2017/09/28(木)18:30:11 ID:EDX
Revealing the content of the address bar (IE)
http://www.brokenbrowser.com/revealing-the-content-of-the-address-bar-ie/

アドレスバーの内容を取得できる脆弱性
538名無しさん@おーぷん :2017/10/01(日)09:04:21 ID:TJc
Firefox 56 が来た
Android版のFlashのサポートが終了
あと、ChromeみたいにHeadlessモードが実装された
https://developer.mozilla.org/en-US/Firefox/Headless_mode
539名無しさん@おーぷん :2017/10/05(木)07:14:24 ID:dAw
URLで使用可能な文字、使用できない文字
https://www.ipentec.com/document/document.aspx?page=web-url-invalid-char
実質利用できる文字は

アルファベット A-Z a-z
数字 0-9
-
_

となります。
540名無しさん@おーぷん :2017/10/12(木)18:42:12 ID:nMt
急に
cross-process JS call failed
が出るようになって、にっちもさっちも行かないわ
52.4.0 ESR なのだが
541名無しさん@おーぷん :2017/10/13(金)07:02:54 ID:uS4
>>540
これ?
http://boukenki.info/selenium-error-cross-process-js-call-failed-kaiketuhouhou/
542名無しさん@おーぷん :2017/10/13(金)11:30:55 ID:1jk
たぶんそれなんだけど、
一般向けFirefoxで11月28日までしか使えないいい
543名無しさん@おーぷん :2017/10/13(金)19:15:51 ID:uS4
一般向け?
ESRの話だろ
544名無しさん@おーぷん :2017/10/13(金)20:18:26 ID:1jk
ESRも来年までだから、やる気ないわ
わいは WebExtensions に引っ越すわ
545名無しさん@おーぷん :2017/10/14(土)06:23:53 ID:F4j
ならそれでいいじゃんww
546名無しさん@おーぷん :2017/10/20(金)16:12:14 ID:Ekk
twitter の <noscript> による refresh は止めること出来ませんか?

<noscript>
<meta http-equiv="refresh" content="0; URL=https://mobile.twitter.com/i/nojs_router?path=%2F&amp;lang=ja">
</noscript>
547名無しさん@おーぷん :2017/10/20(金)16:22:18 ID:RHm
ブラウザの設定でrefreshを無効にするとか
https://mgng.mugbum.info/379
548名無しさん@おーぷん :2017/10/20(金)17:56:24 ID:Ekk
accessibility.blockautorefresh
で、Firefox で止めることができました

https://twitter.com/TwitterJP/status/917538738707693568

googleは gbv=1 でリダイレクト回避可能なのかも
https://www.google.co.jp/search?q=JavaScript
https://www.google.co.jp/search?q=JavaScript&gbv=1
549名無しさん@おーぷん :2017/10/20(金)17:59:02 ID:Ekk
おーぷんもここで止まってしまう

http://toro.open2ch.net/test/bbs.cgi?guid=ON
550名無しさん@おーぷん :2017/10/20(金)19:01:10 ID:RHm
手動で戻ればよくね
551名無しさん@おーぷん :2017/11/05(日)08:31:39 ID:zgY
UnityScriptとかいうJavaScriptもどきが廃止されるらしい

UnityScript’s long ride off into the sunset
https://blogs.unity3d.com/jp/2017/08/11/unityscripts-long-ride-off-into-the-sunset/
552名無しさん@おーぷん :2017/11/15(水)11:20:25 ID:g1e
Firefox 57の更新が来た
旧形式の拡張機能が無効になったな
このバージョンはFirefox Quantumとかいう名前がつけられてて、新しく並列CSSエンジンが導入されたらしい

>>535のAsync generatorも使えるようになってる

async function* getChunkSizes(url) {
const response = await fetch(url);
for await (const chunk of streamAsyncIterator(response.body)) {
yield chunk.length;
}
}
553名無しさん@おーぷん :2017/11/17(金)13:27:33 ID:pDG
WebAssembly対応、主要ブラウザChrome/Firefox/Edge/Safariで整う。Webアプリの開発言語としてJavaScript以外の選択肢は広がるか?
http://www.publickey1.jp/blog/17/webassembly_browsers.html
554名無しさん@おーぷん :2017/11/18(土)18:33:15 ID:frY
一時期Reactのライセンスが問題になってたが、結局MITになったんだな

Facebook、ReactのライセンスをMITに変更の意向
http://news.mynavi.jp/news/2017/09/29/049/

Relicensing React, Jest, Flow, and Immutable.js
https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/

React v16.0
https://reactjs.org/blog/2017/09/26/react-v16.0.html#mit-licensed
555名無しさん@おーぷん :2017/12/07(木)22:22:08 ID:1ej
Chromeの最新版(63)でもasync iteratorが実装された
556名無しさん@おーぷん :2018/01/06(土)19:42:16 ID:LVf
Meltdown, Spectreの影響で、Firefoxで時間を取得できるAPIが修正された

Mitigations landing for new class of timing attack
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/

> The resolution of performance.now() will be reduced to 20µs.
> The SharedArrayBuffer feature is being disabled by default.
557名無しさん@おーぷん :2018/01/07(日)18:01:45 ID:LIe
>>556
この修正は、各ブラウザでも取り入れられるようだ

Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer
https://blogs.windows.com/msedgedev/2018/01/03/speculative-execution-mitigations-microsoft-edge-internet-explorer/#ux7lKySy9e0EDXWm.97

Actions Required to Mitigate Speculative Side-Channel Attack Techniques
https://www.chromium.org/Home/chromium-security/ssca

開発者はcookieの扱いとMIME typeの設定に注意すべきとのこと
> Where possible, prevent cookies from entering the renderer process' memory by using the SameSite and HTTPOnly cookie attributes, and by avoiding reading from document.cookie.
> Make sure your MIME types are correct and specify a nosniff header for any URLs with user-specific or sensitive content, to get the most out of cross-site document blocking for users who have Site Isolation enabled.
558名無しさん@おーぷん :2018/01/22(月)18:15:47 ID:kQD
これから開発されるFirefoxの新規機能は、HTTPSにしか対応しない。新規のCSSプロパティなども対象
http://www.publickey1.jp/blog/18/firefoxhttpscss.html

おーぷんがHTTPS化する日は来るのだろうか
559名無しさん@おーぷん :2018/02/20(火)18:18:13 ID:8GR
ES2018の主な新機能はAsync Iteration, Rest/Spread Properties, RegExpの強化か
RegExpがかなり使いやすくなるな
560名無しさん@おーぷん :2018/03/05(月)13:43:28 ID:bAk
Googleが「Dart 2」発表、Dartを再起動。iOS/Android用ライブラリ「Flutter」と共にWebとモバイルのクライアント開発にフォーカス
http://www.publickey1.jp/blog/18/googledart_2dartiosandroidfultterweb.html
561名無しさん@おーぷん :2018/03/15(木)15:42:16 ID:SI3
JavaScriptのコードとService Workerをユーザーに近いCDNのエッジで実行可能。Cloudflareが「Cloudflare Workers」を提供開始
http://www.publickey1.jp/blog/18/javascriptservice_workercdncloudflarecloudflare_workers.html
562名無しさん@おーぷん :2018/04/16(月)08:59:06 ID:96H
Mozillaが「WebAssembly Studio」発表。C/Rust/AssemblyScript対応のオンラインIDE
http://www.publickey1.jp/blog/18/mozillawebassembly_studiocrustassemblyscriptide.html

> AssemblyScriptとは、TypeScriptをWebAssemblyへ事前コンパイル可能にするため、TypeScriptにいくつかの制約などを加えたTypeScriptのサブセットです
https://github.com/AssemblyScript/assemblyscript/wiki
563名無しさん@おーぷん :2018/05/07(月)17:52:58 ID:iiK
Android端末に「Rowhammer攻撃」、ChromeやFirefoxに脆弱性
http://www.itmedia.co.jp/enterprise/articles/1805/07/news043.html

> CPUとGPUが同じメモリを共有している、スマートフォンなどの小型デバイスに対してのみ通用する
> 問題の発覚を受け、Google ChromeとMozilla Firefoxはそれぞれ更新版が公開され、今回の攻撃に利用されたWebGLの機能を無効にする措置を講じたという。一方、Microsoftのブラウザは影響を受けないとされる。
564名無しさん@おーぷん :2018/05/10(木)07:58:33 ID:KLt
Firefox 60の更新が来た
ES moduleがサポートされて、全てのメジャーブラウザで使えるようになった
565小学生◆8p5ZayI4GE :2018/05/21(月)18:16:59 ID:J6u
只今難解プログラミング言語作成中
ひと段落したら自作ホームページ(まだ公開してません)に
公開する予定です

新着レスの表示 | ここまで読んだ

名前: mail:





JavaScript HTML5
CRITEO