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

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

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

これじゃあかんのか??

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 = :

jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか?
それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか

853 = :

>>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 = :

後者で合ってる

855 = :

文法が違うと言われるとなんか違和感

856 = :

<div id="top">
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
<div>a<div>
</div>

こういうhtmlがあります
div#topの子要素をクリックしたときにインデックスが知りたいんですが
これはどうやって調べればいいのでしょうか?

857 = :

これで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 = :

>>854-855
最近javascript始めたので、まだ文法うろ覚えなんです
C++みたいな黒魔術使えるのかなーって思っただけです
あざーす

860 = :

>>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 = :

writable:trueとconfigurable:trueは要らんの?

862 = :

>>860
なんでwebkit限定にするの?

863 = :

>>862
まだプレフィックス要るよということをwebkitに代表させただけ
他がどの程度対応してるかは知らん

864 = :

>>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 = :

せやな

868 = :

恐怖のstaticおじさんの話じゃないだろうな……
http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html

869 = :

本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら
関数数個のファイルだらけにならないか?

870 = :

継承のためのメソッドを実装した継承可能クラスがあれば
継承を書くの簡単じゃね?と思ったのですが
そういうのありますか?

872 = :

コンストラクタから親クラスのコンストラクタを呼び出したり
メソッドをmixinしたりの処理がありますが・・

873 = :

javascriptでデストラクタのやり方をおしえてください

874 = :

ない

875 = :

>>872
言葉はいいからコードでどうしたいのか例示して

876 = :

どうかくのが良いのでしょうか
これのサンプルおねがいします

877 = :

>>876
一般的な話過ぎて特定のサンプルコードにするのは難しいな

878 = :

ExtendableClass.inherit(Hoge,hogesMethods);
Hoge.inherit(Moge,mogesMethods);
var moge = new Moge();

こんなイメージです

879 = :

一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?

880 = :

>>873
1回だけ参照が切れてるか調べる方法ならある

881 = :

>>880
おしえてえください

882 = :

>>878

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

Moge.__proto__ = Hoge.prototype
Moge.prototype = mogesMethods

883 = :

そうですか・・・
あごっちに直接聞けばいいんですけど・・・

884 = :

>>879
ある程度まとまった量のコードを書かないと>>760に沿うようなサンプルの形にならんから
手間的にちょっと厳しいって感じだ

885 = :

超簡単な話こういうこと

//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 = :

まちった

//OK
function Human(name, age) {
this.wareki = getWareki(age)
}

887 = :

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

888 = :

Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど
JavaScriptでは必ずしもそうでじゃないよ

889 = :

>>886がよくて>>887がダメな理由がわからん

890 = :

>>885-887が
>Class(Object)の構築を初期化内でやるのはやめましょう。
これに対するサンプルコードだとは思えんな

891 = :

ロジックの分離ということだろう

そしてこのケースだと単純すぎてそぐわないが
obj.init()
とか
obj.set~
みたいなスタイルが一番推奨ということだろう

892 = :

>>890
>どうしてもさけられない場合でもせめてロジックと分離しましょう
この部分です
大きな構造になってくると>>891みたいな事だと思います

893 = :

クラスつまりコンストラクターとプロトタイプの定義と、
それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
>>886-887はクラスをどう定義するかって話になるんでちょっとズレてるような

894 = :

ちゃんとクラスを作れという話だよ
動的にメソッドを追加するなってこと

895 = :

直前のツイート読む限りそういうことだな

896 = :

どんどんJavaScriptじゃなくなっていく気がするね
もう別の言語でいいじゃんってならないの

897 = :

普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ

898 = :

JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
各自が用途に適した作法で書けばいいでしょう
ある程度規模の大きいプログラムの場合は>>893-894みたいな作法が好ましいってだけですね

899 = :

そんなことJSに限らず当たり前だろ

900 = :

クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね?

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一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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