のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,905人
昨日:no data人
今日:
最近の注目
人気の最安値情報

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    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 = :

    ジットハブに自分でプロダクトを登録した場合
    説明は英語で書かないといけないのですか?


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について