読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

new thisって何?

JavaScript


昨日、ネットを見てて気になったので調査しました。
気になったのはJavaScriptで次のような感じでした。

p = new this[s];


なんかパッと見でよく分からなかったのですが、ちゃんと考えれば簡単なことでした。


まず、次のような簡単なクラス(function)を作り、インスタンスを生成します。

function Hoge(){}
var h = new Hoge();


JavaScriptは普通にfunctionで定義されたものはwindowオブジェクトのメソッドになります。
ということで、次のように書くことも出来ます。

var h = new window.Hoge();


さらにwindowはグローバルな箇所ではthisと同じなので次のようにも書けます。

var h = new this.Hoge();


JavaScriptではオブジェクトのメソッドを [] で呼び出すことが出来るので、次のように書けます。

var h = new this['Hoge']();


これで new this が何をやってるかが理解できました。


これを使えば動的にインスタンスを生成するようなことも可能になります。


コンストラクタに引数を渡したい場合は次のような感じです。

function Hoge(name){
    this.name = name;
}
var h = new this['Hoge']('foo');

久しぶりにガッツりとJavaScriptをやりたいかも。