Gavin_Alison
2016-07-19 16:41:52
求大神解答!var obj = new foo()的意思?是不是obj指向 foo.prototype,還是指向foo,foo是對象,foo.prototype是原型,這個問題是在《javscript深入簡出》的4-2創建對象中的。希望能對著視頻中的圖講解一下,謝謝了!
4 回答
已采納

tyc1
TA貢獻9條經驗 獲得超7個贊
var obj = new foo();
首先new后面的全部是構造函數,所以foo是一個構造函數
每個函數都會有一個prototype屬性,它的類型是object,所以叫對象屬性,還有一個constructor屬性,指向的就是function foo(){}這個函數
new出來的都是對象,所以obj是一個對象,對象上有一個__proto__標簽,但這個標簽不對外暴露,這個跟跟原型prototype是不一樣的,不要弄混淆了。
這個__proto__標簽指向的就是foo的原型,即foo.prototype

Despicableme01
TA貢獻11條經驗 獲得超9個贊
foo()是一個構造函數,構造函數是用來新建并初始化一個新對象的函數。而構造函數中的屬性和構造函數原型中的屬性就初始化了這個新對象的自有屬性和共有屬性。
構造函數中的屬性是 使用這個構造函數實例化出來的新對象的自有屬性,也就是相當于復制了一份給了這個新對象,所以用delete方法刪除新對象的一個自有屬性的話,新對象中的這個自有屬性就不復存在了。
而構造函數中的原型是 使用這個構造函數實例化出來的新對象的共有屬性,所有用這個構造函數實例化出來的新對象的共有屬性都指向這個原型中的對象。對共有屬性的修改刪除不會影響這個原型對象。對共有屬性的修改相當于給新對象添加了一個新的自有屬性。
添加回答
舉報
0/150
提交
取消