私はこのコードを持っています:
var obj = function (i) {
this.a = i;
this.init = function () {
var _this = this;
setTimeout(function () {
alert(_this.a + ' :: ' + typeof _this);
}, 0);
};
this.init();
};
obj('1');
obj('2');
obj('3');
new obj('4');
このスクリプトは、'3 :: object' を 3 回、'4 :: object' を 1 回警告します。
私はこれがなぜなのか知っています。これnew obj('4')
は、独自のメモリ空間を持つ新しいインスタンスを作成し、以前の呼び出しがメモリ空間を共有しているためです。「オブジェクト」とだけ言っているobj
ので、自分が新しいオブジェクトなのか関数なのかをどのように判断できますか?typeof _this
ありがとう。