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