オブジェクト指向な言語で、かつ関数がファーストクラスオブジェクトな言語だと、いわゆるthisとインスタンスメソッドの関係が個人的には超気になる。 オブジェクト指向な言語だと、インスタンスメソッドの中から(thisとかselfとかいう名前で)属するオブジェクトそのものを取得できる。さらに関数がファーストクラスオブジェクトだと、あるオブジェクトのインスタンスメソッドを「値として取り出して」、他のオブジェクトのスロットだかフィールドだかに代入することで、インスタンスメソッドをすげ換えることができる。 個人的に超気になっているポイントは、いったんインスタンスメソッドとして定義された関数の中に「this」を使った式が書かれている場合、その関数を他のオブジェクトのインスタンスメソッドに代入した時に「this」が何を指すか?というところ。おもしろいことに、そのような場合にthisが何を指すのかを決定する