12
Inada Naoki @methane
オブジェクトはクラスじゃないと言われると、クラスオブジェクト作るだけの Python はクラスが無いな/ 最強オブジェクト指向言語 JavaScript 再入門! on @slideshare #javascript http://t.co/aA53uLvN4k
Inada Naoki @methane
var Hoge = new Function() を class Hoge: と書いたらほぼ Python. だが obj.meth はメソッドをオブジェクトにバインドするのでその点使いやすい。
Inada Naoki @methane
@methane 間違えた。 var Hoge {} を class Hoge: にして、 var hoge = new Hoge() を hoge = Hoge() にするんだ。
文殊堂 @monjudoh
@methane JSの場合クラスオブジェクトもないから
Inada Naoki @methane
@monjudoh 組み込みで無いだけで、作れば良いよね?
文殊堂 @monjudoh
@methane どういう意味?class base OOPをon JSでやるって話?
Inada Naoki @methane
@monjudoh 言いたいのは、クラスの役割をするオブジェクトを作ってもそれは本当のクラスじゃないってのがなんか違うよなーってことです
文殊堂 @monjudoh
@methane クラスの役割をするオブジェクトis何?
文殊堂 @monjudoh
JSではObject.createを使うことで何らかのobjectをclassに見立てることもなくobjectの生成やprototype継承が出来るのでclassの役割を持ったobjectを一切使わないことが普通にできるが、
文殊堂 @monjudoh
これまでのJSの歴史の殆どを占めているES3ではリテラルで生成できる一部のobjectを除いては見た目classっぽいコンストラクタ関数経由でないと色々出来なかったのが不幸だと思う。
Inada Naoki @methane
@monjudoh プロトタイプチェーンのためのオブジェクト
文殊堂 @monjudoh
@methane prototypeは任意のobjectなのでclassに見立てるべきではないと思う。class is a objectというのとは話が違う。
Inada Naoki @methane
@monjudoh 多分言いたいことが伝わってない。 http://t.co/aA53uLvN4k の 16, 17, 18, 34, 37 あたりを見て、これがクラスベースとプロトタイプベースの違いだって言ったら、 Python はプロトタイプベースに近くなるなぁと言いたいだけ
文殊堂 @monjudoh
JSのprototype base OOPを実感してみたかったらa=[0,1,2,3];b=Object.create(a);ってやってbを色々触ってみるといいと思うよ。
文殊堂 @monjudoh
@methane Pythonって任意のobjectをclassに出来るんです?例えば[0,1,2,3,4]っていうリストとか。
文殊堂 @monjudoh
@methane JSだと任意でa=[0,1,2,3];b=Object.create(a);とか出来るんで、prototype chainの為のobjectなどというのはなくてobjectをprototype chainに組み入れられるというのが正しい。
Inada Naoki @methane
@monjudoh 例えば 37 ページ、これまさに Python でメソッドとか属性探すときと完全に同じですよね。
文殊堂 @monjudoh
@methane 37ページの図を見たときにclass base OOPが念頭にある人は委譲先のobjectをclassと同じような特別な物として見てしまう先入観があるんじゃないかと思うんだけどどうか
Inada Naoki @methane
@monjudoh いやだからそれは分かってるしそれが言いたいんじゃないです。
Inada Naoki @methane
@monjudoh あの説明でクラスベースとプロトタイプチェーンが違うと言ったら、制限されたプロトタイプチェーンでクラス実装してる Python の立場はどうなるの?という事が言いたいだけです。
Inada Naoki @methane
@monjudoh プロトタイプチェーンでクラスっぽいものは作れるしそれをクラスと呼べばクラスになる。例えば Python 。
文殊堂 @monjudoh
@methane どっちかというとあのスライドの35ページのclass baseの説明がよろしくないという話では
Inada Naoki @methane
@monjudoh 34 ページと 37 ページ比べたら、委譲先のオブジェクトが特別なものかどうかよりも大きな違いがあるような説明に見えます。任意のオブジェクトがプロトタイプになれるかどうかという話なら納得です。
Inada Naoki @methane
@monjudoh Yes! どっちかというとじゃなくて最初からそういう意味です!クラスベースをそう定義したら Python クラスベースじゃなくなるじゃん!って。
残りを読む(23)

コメント

文殊堂 @monjudoh 2013年7月5日
にゅるにゅる先輩のtweetを追加。
ゆかーぬ @yuka2py 2013年7月6日
言い訳させてくださいー。Web上のJS OOP回りの話でJava的クラスの概念で理解しようとして混乱してる記事が多くあって、もう少し動的な部分を説明しつつなるべく簡潔に解説したいなーと思ってあんな表現になりましたー。JS OOPで混乱してる方には良いかなと思ったのですが、あんなにバズるとは…。反省してスライドにちっちゃく注釈を足しましたー。 (^_^;A
ログインして広告を非表示にする
ログインして広告を非表示にする