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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
851 : Name_Not - 2013/09/19(木) 20:35:58.09 ID:??? (+9,-30,-135)
これじゃあかんのか??

Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source)
for (var i = 0; i < keys.length; ++i) {
target[keys[i]] = source[keys[i]]
}
return target
}
})
852 : Name_Not - 2013/09/19(木) 21:07:30.12 ID:??? (+14,-23,-43)
jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか?
それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか
853 : Name_Not - 2013/09/19(木) 21:09:21.51 ID:??? (+4,-30,-171)
>>851
Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; i++) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}, enumerable: false
});
854 : Name_Not - 2013/09/19(木) 21:09:26.66 ID:??? (+71,+19,-2)
後者で合ってる
855 : Name_Not - 2013/09/19(木) 21:11:22.24 ID:??? (+52,+29,-4)
文法が違うと言われるとなんか違和感
856 : Name_Not - 2013/09/19(木) 21:15:15.61 ID:??? (+4,-30,-38)
<div id="top">
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
</div>

こういうhtmlがあります
div#topの子要素をクリックしたときにインデックスが知りたいんですが
これはどうやって調べればいいのでしょうか?
857 : Name_Not - 2013/09/19(木) 21:16:17.85 ID:??? (+3,-30,-157)
これでFAだな

Object.defineProperty(Object, 'mixin', {
value: function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; ++i) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}
});
858 : 852 - 2013/09/19(木) 21:18:07.21 ID:??? (+67,+29,-9)
>>854-855
最近javascript始めたので、まだ文法うろ覚えなんです
C++みたいな黒魔術使えるのかなーって思っただけです
あざーす
859 : Name_Not - 2013/09/19(木) 21:21:03.48 ID:??? (+0,-28,-16)
jqueryは最初、$がただの関数名だと気づけなかった
860 : Name_Not - 2013/09/19(木) 21:30:53.88 ID:??? (+7,-30,-133)
>>856
こんな感じ
テストはしてない

var tar = event.currentTarget
var top = document.querySelector('div#top')
var divs = document.querySelectorAll('div#top>div')
while(tar && !tar.webkitMatchesSelector('div#top>div')) tar = tar.parentNode
if(!tar) return //場違いな要素
for(var i=0;i<divs.length)if(tar == divs[i]) break;

//---iが番数--
//以降処理
861 : Name_Not - 2013/09/19(木) 21:35:32.84 ID:??? (+4,-29,-24)
writable:trueとconfigurable:trueは要らんの?
862 : Name_Not - 2013/09/19(木) 21:42:11.19 ID:??? (+25,-29,-1)
>>860
なんでwebkit限定にするの?
863 : Name_Not - 2013/09/19(木) 21:57:17.79 ID:??? (+45,+14,-26)
>>862
まだプレフィックス要るよということをwebkitに代表させただけ
他がどの程度対応してるかは知らん
864 : Name_Not - 2013/09/19(木) 21:59:53.33 ID:??? (+3,-30,-159)
>>861
つうかプロトタイプ拡張じゃないんだからこれでいい

Object.mixin = function (target, source) {
var keys = Object.getOwnPropertyNames(source);
for (var i=0; i<keys.length; ++i) {
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
return target;
}
865 : Name_Not - 2013/09/19(木) 22:05:31.17 ID:??? (+36,+18,+0)
せやな
866 : Name_Not - 2013/09/19(木) 22:28:14.92 ID:??? (-1,-29,-13)
SIerが作ってる業務APPは、画面枚にjavascriptを別ファイルに外出しするのが普通なんですか?
867 : Name_Not - 2013/09/19(木) 22:29:14.52 ID:??? (-2,-29,-1)
SIerってなに?
868 : Name_Not - 2013/09/19(木) 22:33:26.84 ID:??? (+52,+24,-15)
恐怖のstaticおじさんの話じゃないだろうな……
http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html
869 : Name_Not - 2013/09/19(木) 22:50:17.68 ID:??? (+57,+29,-11)
本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら
関数数個のファイルだらけにならないか?
870 : Name_Not - 2013/09/19(木) 23:07:32.13 ID:??? (+15,-12,-44)
継承のためのメソッドを実装した継承可能クラスがあれば
継承を書くの簡単じゃね?と思ったのですが
そういうのありますか?
871 : Name_Not - 2013/09/19(木) 23:16:23.24 ID:??? (-2,-30,-27)
継承なんてこれでいいじゃん
obj.__proto__ = ClassX.prototype
872 : Name_Not - 2013/09/19(木) 23:20:27.32 ID:??? (+32,-29,-71)
コンストラクタから親クラスのコンストラクタを呼び出したり
メソッドをmixinしたりの処理がありますが・・
873 : Name_Not - 2013/09/19(木) 23:21:23.09 ID:??? (+76,+15,-16)
javascriptでデストラクタのやり方をおしえてください
874 : Name_Not - 2013/09/19(木) 23:22:27.61 ID:??? (+29,+11,-1)
ない
875 : Name_Not - 2013/09/19(木) 23:26:42.91 ID:??? (+61,+29,-5)
>>872
言葉はいいからコードでどうしたいのか例示して
876 : 760 - 2013/09/19(木) 23:28:35.92 ID:??? (+90,+29,-15)
どうかくのが良いのでしょうか
これのサンプルおねがいします
877 : Name_Not - 2013/09/19(木) 23:33:17.33 ID:??? (+69,+29,-7)
>>876
一般的な話過ぎて特定のサンプルコードにするのは難しいな
878 : Name_Not - 2013/09/19(木) 23:36:10.47 ID:??? (+9,-30,-30)
ExtendableClass.inherit(Hoge,hogesMethods);
Hoge.inherit(Moge,mogesMethods);
var moge = new Moge();

こんなイメージです
879 : Name_Not - 2013/09/19(木) 23:49:48.73 ID:??? (+91,+29,-22)
一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?
880 : Name_Not - 2013/09/19(木) 23:59:20.91 ID:??? (+96,+29,-4)
>>873
1回だけ参照が切れてるか調べる方法ならある
881 : Name_Not - 2013/09/20(金) 00:00:57.43 ID:??? (+59,+24,-3)
>>880
おしえてえください
882 : Name_Not - 2013/09/20(金) 00:04:27.82 ID:??? (+4,-30,-105)
>>878

Hoge.__proto__ = ExtendableClass.prototype
Hoge.prototype = hogesMethods

Moge.__proto__ = Hoge.prototype
Moge.prototype = mogesMethods
883 : 760 - 2013/09/20(金) 00:06:37.91 ID:??? (+57,+29,-6)
そうですか・・・
あごっちに直接聞けばいいんですけど・・・
884 : Name_Not - 2013/09/20(金) 00:20:24.13 ID:??? (+74,+29,-29)
>>879
ある程度まとまった量のコードを書かないと>>760に沿うようなサンプルの形にならんから
手間的にちょっと厳しいって感じだ
885 : Name_Not - 2013/09/20(金) 00:31:03.69 ID:??? (+7,-30,-117)
超簡単な話こういうこと

//NG
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = (year - age > 25) ? 'showa' : 'heisei'
}

//OK
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = getWareki(year - age)
}
886 : Name_Not - 2013/09/20(金) 00:31:51.14 ID:??? (+68,-30,-41)
まちった

//OK
function Human(name, age) {
this.wareki = getWareki(age)
}
887 : Name_Not - 2013/09/20(金) 00:34:06.13 ID:??? (+38,-30,-58)
//NG
function Human(name, age) {
var year = (new Date).getFullYear
this.wareki = (year - age < 1988) ? 'showa' : 'heisei'
}
888 : Name_Not - 2013/09/20(金) 00:39:28.94 ID:??? (+57,+29,-39)
Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど
JavaScriptでは必ずしもそうでじゃないよ
889 : Name_Not - 2013/09/20(金) 00:47:00.27 ID:??? (+63,+29,-5)
>>886がよくて>>887がダメな理由がわからん
890 : Name_Not - 2013/09/20(金) 00:49:59.83 ID:??? (+32,-29,-18)
>>885-887が
>Class(Object)の構築を初期化内でやるのはやめましょう。
これに対するサンプルコードだとは思えんな
891 : Name_Not - 2013/09/20(金) 00:52:24.69 ID:??? (+33,-29,-53)
ロジックの分離ということだろう

そしてこのケースだと単純すぎてそぐわないが
obj.init()
とか
obj.set~
みたいなスタイルが一番推奨ということだろう
892 : Name_Not - 2013/09/20(金) 00:56:27.65 ID:??? (+63,+29,-28)
>>890
>どうしてもさけられない場合でもせめてロジックと分離しましょう
この部分です
大きな構造になってくると>>891みたいな事だと思います
893 : Name_Not - 2013/09/20(金) 01:03:49.30 ID:??? (+108,+29,-81)
クラスつまりコンストラクターとプロトタイプの定義と、
それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
>>886-887はクラスをどう定義するかって話になるんでちょっとズレてるような
894 : Name_Not - 2013/09/20(金) 01:22:23.78 ID:??? (+57,+29,-31)
ちゃんとクラスを作れという話だよ
動的にメソッドを追加するなってこと
895 : Name_Not - 2013/09/20(金) 01:27:11.46 ID:??? (+57,+29,-16)
直前のツイート読む限りそういうことだな
896 : Name_Not - 2013/09/20(金) 03:01:03.48 ID:??? (+57,+29,-10)
どんどんJavaScriptじゃなくなっていく気がするね
もう別の言語でいいじゃんってならないの
897 : Name_Not - 2013/09/20(金) 03:27:22.17 ID:??? (+6,-21,-19)
普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ
898 : Name_Not - 2013/09/20(金) 03:36:12.84 ID:??? (+77,+29,-39)
JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
各自が用途に適した作法で書けばいいでしょう
ある程度規模の大きいプログラムの場合は>>893-894みたいな作法が好ましいってだけですね
899 : Name_Not - 2013/09/20(金) 08:48:22.49 ID:??? (+52,+29,-16)
そんなことJSに限らず当たり前だろ
900 : Name_Not - 2013/09/20(金) 12:16:33.66 ID:??? (+36,-30,-232)
クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね?

function extendsClass(Parent,Child) {
var keys,key,i,prototype;
prototype = Child.prototype;
Child.prototype = Object.create(Parent.prototype);
keys = Object.keys(prototype);
for ( i=keys.length; i--;){
key = keys[i];
Child.prototype[key] = prototype[key];
}
Child.prototype.constructor = Child;
}
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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