4 回答

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

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