這個代碼看看:混亂行爲的JavaScript
function Foo() {
console.log(this instanceof Foo);
return { name: "nitesh" };
}
foo = new Foo(); //true
console.log(foo instanceof Foo) //false
- 爲什麼
foo
不是Foo
一個實例? - 爲什麼
this
是Foo
的一個實例?
這個代碼看看:混亂行爲的JavaScript
function Foo() {
console.log(this instanceof Foo);
return { name: "nitesh" };
}
foo = new Foo(); //true
console.log(foo instanceof Foo) //false
foo
不是Foo
一個實例?this
是Foo
的一個實例?在您的Foo
函數中,您返回一個對象。這是foo
的設置。這不是一個Foo
對象,它只是一個「正常」的對象。
試試這樣說:
function Foo(){
console.log(this instanceof Foo);
this.name = "nitesh";
}
var foo = new Foo(); //true
console.log(foo instanceof Foo) //true
感謝您的解釋,但我仍然感到困惑這是Foo的一個實例嗎? – 2012-08-09 14:21:44
@niteshsharma:這就是'新'的作品。從[docs](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/new):'構造函數被調用指定的參數,'this'綁定到新創建的object.' – 2012-08-09 14:23:26
你基本上是做'{名: 「nitesh」}的instanceof Foo'。 – 2012-08-09 14:20:15