4 回答

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

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