課程
/前端開發
/JavaScript
/JavaScript深入淺出
function?A()?{} A.prototype.a?=?1; var?a?=?new?A(); a.b?=?2; for?(i?in?a)?{ console.log(i) }
2017-05-28
源自:JavaScript深入淺出 3-3
正在回答
運行時會先去本體的屬性中去找,然后再去prototype中尋找。
針對你的代碼:
function?A()?{} x?=?1; var?a?=?new?A(); a.b?=?2; for?(i?in?a)?{ console.log(i) }
這里a中屬性只有你自己添加的b,所以肯定只會打印出b
今世緣0 提問者
prototype 是一個可以向對象添加屬性或者方法的屬性,如果不用它,淡村的a=1,只是說明你定義了一個單個變量而已,所以肯定在輸出實例化的A()方法時不會輸出a
function?A()?{} A.prototype.a?=?1; var?aa?=?new?A(); document.write(aa.a);//aa是方法A()的示例,擁有使用?prototype?屬性來向對象添加的屬性a,輸出1 aa.b?=?2; document.write(aa.b);//在給aa添加了一個b的屬性后,輸出b的值2 //運行時會先去本體的屬性中去找,然后再去prototype中尋找,所以先輸出b,后輸出a for?(i?in?aa)?{ ????document.write(i); }
function?A()?{} x?=?1; var?a?=?new?A(); a.b?=?2; for?(i?in?a)?{ console.log(i) } 這樣子怎麼只能打印出b???
我貌似知道了,不是因為順序不確定。是因為它先會去找它自身擁有的屬性,然后再去找原型鏈上的屬性,是這樣吧?還是因為其他原因?
用一張課程截圖給你解釋吧
舉報
由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握
3 回答foreach(),括號中的a as b,我怎么理解
7 回答function內,var a = b = 1; b 為什么會是全局變量?
5 回答我兩個打印出來的都是number ,為什么?
4 回答如果我改成var o={a:37,f:f(),g:g()},g是可以打印出來的,f卻是undefined,為什么?
3 回答我什么能打印 。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-05-28
運行時會先去本體的屬性中去找,然后再去prototype中尋找。
針對你的代碼:
這里a中屬性只有你自己添加的b,所以肯定只會打印出b
2017-05-28
prototype 是一個可以向對象添加屬性或者方法的屬性,如果不用它,淡村的a=1,只是說明你定義了一個單個變量而已,所以肯定在輸出實例化的A()方法時不會輸出a
2017-05-28
2017-05-28
2017-05-28
我貌似知道了,不是因為順序不確定。是因為它先會去找它自身擁有的屬性,然后再去找原型鏈上的屬性,是這樣吧?還是因為其他原因?
2017-05-28
用一張課程截圖給你解釋吧