元スレ+ JavaScript の質問用スレッド vol.93 +
JavaScript覧 / PC版 /みんなの評価 :
451 = :
new忘れたときに意図しない場所にプロパティ追加されたりするとかってやつじゃないか
452 = :
>>448
下記サイトを見てください。
http://www.jslint.com/lint.html#new
http://www.tagindex.com/kakolog/bbs/101/319.html#res328
http://d.hatena.ne.jp/vividcode/20110514/1305359722
455 = :
>>411
なるほど!よくわかりました!
456 = :
関数定義も一応文として見れるんじゃない?
つうか実装レベルでみてみると定義しづらいね
457 = :
オブジェクト指向の書き方がいまいち分かりません
関数をベタ書きで書いたりprototypeを乱用してます
良いオブジェクト指向の書き方で参考になるサイトを教えてください
459 = :
関数や制御構文はメソッドの中にしか書いてはならない
460 = :
>>457
良いオブジェクト指向で書こうと思うのが誤り
良いJavaScriptを書こう
461 = :
>>460
ありがとうございます
良いJavaScriptを書こうと思います
添削をお願いしてもいいでしょうか?
var a = new Object();
a.time = new Date();
alert(a.time);
という書き方は良いでしょうか?
462 = :
まあ好みの範囲で悪くないと思うよ
一つ言うならtimeって明確な名前の子を持ってる
オブジェクトの名前がaって素朴過ぎる感じがする
場合によるけどこれなら別に
var time = new Date();
でいいんじゃないかと思う
463 = :
本当に大丈夫ですかね?子飼弾先生に指摘されたら怖い
465 = :
おそらく以降の処理でも使うんじゃないかな。
だから変数に入れているわけで。
466 = :
>>463
コードが短すぎて良いコードか判断できないよ。
あえていうならオブジェクト初期化子にした方がいい。
467 = :
var a = { time: new Date() };
こう?こうでいいんすね?怒られないすね?
468 = :
まぁ、経験
469 :
>>467
何をそんなに怯えてるんだよw
470 = :
せっかくブログを作っても大物にディスられたら人生積むじゃん
471 = :
>>467
だからコードが短すぎて判断できないんだってば。
jsfiddleに全部のコードをUPして評価して貰った方がいいよ。
prototype乱用ってわりにprototypeを全然使ってないし、正直意味がわからない。
>452を参考にするといいかもね。ひょっとして同じ人?
473 = :
>>463
> 子飼弾先生に指摘されたら怖い
もしかして: 小飼弾
本人に直接聞いた方がいいよ。その人がどう判断するかをここの住人が知ってるわけないんだから。
(小飼弾氏はjavascripterとしては大物ではないと思うけど。)
474 = :
475 = :
>>473
だってあの先生はJavascriptのブログをディスりまくってるじゃないすか
俺みたいなザコが先生のブログで質問したらまず囲いユーザーに潰されそうで怖いです
476 = :
>>474
続けるなら名前を 457 にして。文脈から全部追うのは難しい。
477 = :
>>472
グローバル変数にフラグを置く手法はどうかと思うけど、ハンドラ関数の中で分岐させるのが主流だと思う。
unbind() でイベント削除してもいいけど、その都度削除したり追加したりするのは効率がよくない。(ケースバイケースだけどね)
http://api.jquery.com/unbind/
478 = :
>>472
そういうとこで躓くのは、いきなりjQueryからはじめるからか?
ヒント、$('#button').bind('click', callback);
479 = :
>>477>>478
ありがとうございます
もうちょっとjQueryについて勉強しなおしてきます
481 = :
すいませんでした457ってコテハンつけます
var a = {
"name":"坂本",
"age":"16",
"func":function(x){return x * 100;}
};
alert(a.func(10));
っていうのと
var a = function(){}
a.prototype.name = "坂本";
a.prototype.age = "16";
a.prototype.func = function(x){return x * 100;};
var obj = new a();
alert(obj.func(10));
っていうのと
var a = new Object();
a.name = "坂本";
a.age = "16";
a.func = function(x){return x * 100;};
alert(a.func(10));
この3つの中で良い書き方と悪い書き方を教えてください
482 = :
>>481
質問の仕方だけど、コードを比較する場合は名前つけたほうがいいよ。上からabcにしようか。
aとcはほぼ同じだけど、普通はaの書き方をする。そんで、aとbの違いはそれがクラスかどうかってこと。
>>460に反するけどオブジェクト指向は必須だぞ。オブジェクト指向の概念、クラス定義、継承、このあたり勉強してこい。
483 = :
>>481
状況によるから一概に良い・悪いは決められない。
その例題だとname,age,funcがバラバラだからa以外はありえないが。
484 = :
>>480
はっきり言うけど、どーでもいい。こう書いたらこうなる、それが分かれば問題なし。
485 = :
>>482-483
なるほど
ありがとうございます
基本はaで書くようにして必要に感じたときにbcで書きたいと思います
486 = 469 :
>>482
安易にクラスって言葉使うと噛み付かれることがあるから気をつけなはれ
わかってる人はいいけどね
487 = :
>>480
サイ本のページ数も示していただけると参照しやすく助かります。
(P96) "function文は厳密に言うと文ではありません。"
(P125) "function文は、構文上は文であり、関数名が必要です。関数リテラルは、構文上は式であり、関数名が不要です。"
ここでいわれる "構文上は" はおそらく Syntax を表しています。
"function文" は FunctionDeclaration に相当するので「構文上は関数定義」が正しいですね。
"関数リテラル" は FunctionExpression に相当するので「構文上は式」で合っています。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/13_Function_Definition.html#section-13
ただし、その後の "関数名が不要です" は誤りです。
FunctionExpression では Identifier (関数名) がオプションであり、省略することも命名することも可能です。
var a = function b () { // 名前付き関数式
alert(b); // b はこの関数内でのみ呼び出せる
};
名前付き関数式は IE8- でスコープが漏れるバグがありますが、関数名を付けるとデバッグ時に有効だそうです。
また、再帰処理するときにも有効です。
ES5 の Strict Mode で arguments.callee を使えなくて困っている人は命名しておけば便利だと思います。
# サイ本は比較的仕様に忠実な方ではありますが、完全ではありません。
# ECMAScript として見ればおかしいと感じるところはいくつかあります。
# 「function文」や「関数リテラル」はその一つで ECMAScript にない用語です。
# 説明の便宜上、あえてそう表現しているのでしょうが、その用語が仕様から来ているのか便宜上のものなのかを認識してから判断しないといろいろ混乱するところが出てくると思います。
488 = :
>>487
外からも呼び出せるぞ
var a = function b() {
console.log('OK');
};
a(); // "OK"
b(); // "OK"
489 = :
ちょっと疑問なんですが
aの場合はコンストラクタはどう書けばよいのでしょうか?
493 = :
>>489
データとメソッドをまとめるならオブジェクト指向でbの書き方なんだよ。
aはただの集合体に過ぎない。
494 = :
chromeのjavascriptのコンソールで入力するたびにフォーカスがコンソールから外れちゃうんですけど
ショートカットかなにかでコンソールにフォーカスを合わせる方法ありませんか?
いちいちマウスでコンソールをクリックしないといけないのが面倒くさいです
495 = :
>>491の補足。
メモリリークではありませんが、「クロージャを多量生産しない」とはよくいわれますし、賛同します。
必要以上にメモリを占有させる必要はありませんから。
496 = :
>>481
var Ningen = function(name, age){
this.name = name;
this.age = age,
this.func = function(){ return this.name + "は" + this.age + "歳です。";};
};
var sakamoto = new Ningen("坂本", 16);
alert(sakamoto.func());
497 = :
var a = { // オブジェクト初期化子
name: "坂本",
age: "16",
func: function (x) { return x * 100; }
};
function b () { ; } // コンストラクタ関数
b.prototype = {
name: "坂本",
age: "16",
func: function (x) { return x * 100; }
};
var c = new Object();
c.name = "坂本";
c.age = "16";
c.func = function (x) { return x * 100; };
単一オブジェクトを生成するなら、a
複数オブジェクトを生成するなら、b
c は不要
498 = :
ECMAScript 5がいま話題じゃないですか
これってどのブラウザが対応しているかわかりますか?
499 = :
500 = :
jQueryのthickboxで開いたiframeの中でもjQueryを使っています。
ChromeとIEでは正常に動くのですがFireFoxで以下のエラーがでます。
c.defaultView.getComputedStyle(h, null) is null
[このエラーでブレーク] (function(a,b){function cw(a){return f...a:a+"px")}}),a.jQuery=a.$=f})(window);
jquery.min.js (16 行目)
jQuery is not defined
[このエラーでブレーク] g[c][1].apply(f.element,a)}},contains:...b.ui.isOverAxis(g,c,i)}})}})(jQuery);
jquery-ui.min.js (17 行目)
jQuery is not defined
[このエラーでブレーク] })(jQuery);
jQuery...kbox.js (155 行目)
$ is not defined
[このエラーでブレーク] $(document).ready(function(){
addres...s=true& (78 行目)
iframeを読み込んだとたんにこのエラーが出てiframe内のjavascriptが
動作しません。
確かFireFoxで最初に動き出してChromeでデバッグしてるうちに
いつの間にか動かなくなっていました。
ちょっとしたことのような気がするのですが、チェックポイントなど
教えていただけると嬉しいです。
よろしくお願いします。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.93 + (1001) - [100%] - 2011/12/10 18:31
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.131 + (1000) - [95%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [95%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [95%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.133 + (1001) - [95%] - 2018/6/8 10:45
トップメニューへ / →のくす牧場書庫について