元スレ+ JavaScript の質問用スレッド vol.119 +
JavaScript覧 / PC版 /みんなの評価 :
401 = :
Backbone.jsを勉強しているのですが、こんな風に考えているのですが間違っていますか?
ModelとViewで関数をオーバライドすることで、イベントが発生した時にオーバライドした関数をコールバック呼び出してくれる。
JFrameを継承したプログラムを作っているのに感覚に近い気がするのですが、気のせいですか
402 = :
バックボーンとかwwwwwwリリースが遅すぎるものよく使いますねwwwwwwwwwwwwwww
時代はアンギュラーですよ
404 = :
>>402
バックボーンとかアンギュラーとかカタカナで書いて恥ずかしくないの?
405 :
>>381
こんな分かりきった質問と回答に
こんなにイイネ的なものが付く理由が分かりません
406 = 405 :
>>387
少し前の方で__proto__の話題をしていたのは俺でその質問とは別人ですが
俺が勘違いしているように見えたのなら、あなたが勘違いしてるんですよ
あなたの理解が分からないので
どこが間違っているかを指摘してあげることは出来ませんが
407 = :
>>405
じゃあ、Haskellを使う事になったとして配列に要素を代入する方法が分からなかった時に同じような返答を見たら、俺はイイネを付けるね
408 = :
付ければいいんじゃないでしょうか
409 = :
>>406
別人とは思わなかったが、__proto__をいじろうとする場合は、大抵別の方法があると思ったからだ
410 = :
>>408
理解出来てなかったようだから補足するけど、自分が知ってるからって世の中の全員が知ってるわけじゃないぞ
だから、基本的な事でも助かる人は大勢いる
411 = :
>>410
だから好きにすればいいだろ
別にお前の行動を否定したいわけじゃないからw
412 = 405 :
別の方法って何です?
上の議論から古いIEには方法がないという結論になりましたが
そんな革命的な方法があるのなら教えて欲しいですね
413 = :
>>389
標準化されてないものは使ってはいけないの?
element.clientHeightも使っちゃいけないの?
414 :
>>397
ありがとうございます!
415 = :
>>413
> 標準化されてないものは使ってはいけないの?
使用しても良いが、標準化されてない機能は途中で仕様変更が発生するリスクを伴う
そもそも標準化以前に console API で protype まで仕様化してるブラウザはなかったと思うんだけどね
クロスブラウザ以前に仕様化されてない部分の挙動は不安定極まりない
仕様と実装の違いを意識する技術者ならそんな挙動に頼るコードはそれ以外の選択肢がない状況を除いてまず書かない
> element.clientHeightも使っちゃいけないの?
これは標準化されているはずだが
417 = :
>>412
とりあえず色んな__proto__野郎が入り交じって分からなくなってるから
もう一度上げてくれ
418 = :
先回りして答えておくけど、>>345の事だったら以下で出来る
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var Hoge = (function () {
function Hoge() {
}
Hoge.poge = function () {
console.log('poge');
};
return Hoge;
})();
var Moge = (function (_super) {
__extends(Moge, _super);
function Moge() {
_super.apply(this, arguments);
}
return Moge;
})(Hoge);
Moge.poge(); ⇒ poge
419 = :
>>418は実は以下のTypeScriptをコンパイルして出た結果だ
TypeScriptは直感的に書ける
class Hoge {
static poge(): void {
console.log('poge');
}
}
class Moge extends Hoge {
}
Moge.poge();
420 = :
>>418
var Mogeの中にHogeがないのにどうしてpage()が呼べるんですか?
421 = :
>>420
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; ←ここで単にpogeをコピってるだけだ
422 = :
質問です。(JavaScript…というかHTMLの質問かもしれません)
modal Windowにてページを開いた際に、その開いたページの各要素にTabIndexを付けたいのですが
modalを開いた親ページのほうにつけてあるTab移動も効いてしまって、親側の要素にも
TabキーでFocusが当たってしまいます。
modalを開いている間は、親側のTabIndexを無効にしたいのですがそんな事ってできますでしょうか?
JavaScriptでTabキーのPress検出して、JavaScriptでmodal側の要素のみにfocusを当てるという事はできそうですが
modal Windowで開くページは、いろんな種類のものがあるので、個別に指定するのは難しそうで。。
「modalを開いている間は、親のTabIndexを無効にする」という挙動ができると一番良いです。
どうぞよろしくお願い申し上げます。
423 = :
>>418
JavaScriptは色々継承のさせ方が出来るけど、他の言語と同じような継承をさせるには
__extends が一番最適な方法
ちゃんと理解するにはJavaScriptパターンを読むべし
425 = :
>>422
tabindex 無効 javascriptで検索したら1ページ目に解決できる記事を見つけたよ
426 = :
>>425
ありがとうございます。
ただこれは、予めtabindexに-1を設定しておいて無効にする手法なので、ちょっと違うのではないかと。。
modalを開いていない場合は、普通に親ページでもTabIndexは効いて欲しいので。
もろもろ調べましたが、いまいちピッタリの対策が無いので
ひとまずmodalのページにもtabindexを張っておいて、modalの最後の要素まで行ったら
JavaScriptでmodalの最初の要素にfocusを当てなおすという感じで実装したら上手く動きました。
なんかもうちょっとスマートな対応策がありそうですが、ひとまず自己解決しましたのでご報告です。
ありがとうございました。
427 = 405 :
>>418
折角ですが、それはよくある普通のやり方ですよね
そんなことが分からないと言っているのではないのですよ
A級以上のプログラマーにそんなことが分からないわけないでしょう
プロトタイプチェーンで繋いだ場合は、
生成後にHogeに加えたプロパティも自動的にMogeで使えるようになりますが
擬似的継承の場合はそうはなりません
なのでプロトタイプチェーンを繋いで本当の継承をさせたいと考えたのです
428 = :
A級以上のひときたー
429 = :
どうせまた誤解してるんだろうと思ってましたが
自分の意見を書かないので修正が遅れました
相手の意見を否定するなら早い段階で自分の意見を述べて下さいね
こちらも修正しやすいので
430 = :
>>427
A級かどうか知らんけど __extends に文句いう奴初めて見たw
> なのでプロトタイプチェーンを繋いで本当の継承をさせたいと考えたのです
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
↑これはさっき説明した箇所
↓ここから下が「プロトタイプチェーンを繋いで本当の継承」をしてるところ
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
↓これが「本当の継承」
var Hoge = function(){};
Hoge.prototype.poge = function() {
console.log('poge');
};
var Moge = function(){};
Moge.prototype = new Hoge();
var moge = new Moge();
moge.poge(); ⇒ poge
Hoge.prototype.hage = function() {
console.log('hage');
};
moge.hage(); ⇒ hage
431 = :
>>427
以下は、JavaScript特有の継承だが普通は使わない
お前がやりたいのはこっちの方が近いか
var Hoge = {};
Hoge.poge = function() {
console.log('poge');
};
var Moge = Object.create(Hoge);
Moge.prototype = Hoge;
Moge.poge(); ⇒ poge
Hoge.hage = function() {
console.log('hage');
};
Moge.hage(); ⇒ hage
433 = :
>>431
Object.create()はES5の関数だが、Polyfillは
これ
↓
if (!Object.create) {
Object.create = function (o) {
if (arguments.length > 1) {
throw new Error('Object.create implementation only accepts the first parameter.');
}
function F() {}
F.prototype = o;
return new F();
};
}
434 = 405 :
文句じゃねーよ
extendは単になる普通の方法で、いいも悪いもない
ただプロトタイプチェーンを繋ぐという目的には使えない
そんだけのことだ
435 = :
>>434
だから __extends は「(本当の)プロトタイプチェーンを繋ぐという目的」に使われんだよ!
436 = :
>>435
普通のオブジェクトのな。
オブジェクトの間でプロトタイプチェーンを繋ぐのは当たり前のことで問題にもならない。
俺が言ってるのは関数オブジェクトをどうプロトタイプチェーンで繋ぐか。
だから__proto__が出てきたわけ
439 = :
同じような動作に見るのですが、これは何が違うんでしょうか?
var a1 = { sample: {aaa:"bbb"} };
var a2 = { sample: function() {return {aaa:"bbb"};}};
442 = :
よく見れ
var A1 = a1.sample; // { aaa : "bbb" }
var A2 = a2.sample(); // { aaa : "bbb" }
444 = :
使ってるプラグインのバグ報告したいと思うけど、gitのアカウントも無いし英語力に自信がないので二の足をふんでる
446 = :
今の時代アカウントも持たない奴の技術力なんてたかが知れてる
恥をかくだけだからやめとけ
447 = :
>>444
githubの事なら無料でアカウント作成出来るから作ってみては?
448 = :
>>447
githubね 最近git使い始めたから区別出来てなかった
アカウント取って報告してみるよ
いままで一方的に使うだけだで、不具合見つけて解決策発見しても報告してこなかったのでそこから脱却したい
449 = :
自分もそうなんだが、貧弱な英語力でも
訂正したコード書いて「like this」ってすれば、けっこうわかってもらえるよ
450 = :
ジットハブに自分でプロダクトを登録した場合
説明は英語で書かないといけないのですか?
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [97%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.111 + (1001) - [97%] - 2013/11/4 6:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [95%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
トップメニューへ / →のくす牧場書庫について