84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
#如上圖,實例p1和p2的__proto__指向同一個原型物件Person.prototype,
p1
p2
__proto__
Person.prototype
執行p1.age=12,為啥p1.age沒跟著變成12,而還是原來的0
p1.age=12
p1.age
12
0
p1.age並不會改變原型的值,p2沒有age屬性,會順著原型鏈往上找,找到Person裡面age,所以p2.page就是等於Person.prototype.age
因為p1.age修改的是 p1 上的屬性而不是原型上的屬性。
p1.age = 12只會給p1的age賦值,不會給Person的age值,所以p2的age沒有被賦值,所以還是原型上的0
p1.age = 12實際上是給p1添加了一個值為12的屬性age,訪問p1.age時會直接訪問到這個屬性而不會去原型鏈上找p1.age時會直接訪問到這個屬性而不會去原型鏈上找age ,如果要實現p1 p2都改變,可以這麼寫
p1.age = 12
age
p1.age並不會改變原型的值,p2沒有age屬性,會順著原型鏈往上找,找到Person裡面age,所以p2.page就是等於Person.prototype.age
因為
p1.age
修改的是 p1 上的屬性而不是原型上的屬性。p1.age = 12只會給p1的age賦值,不會給Person的age值,所以p2的age沒有被賦值,所以還是原型上的0
p1.__proto__.age = 12🎜🎜p1.age = 12
實際上是給p1
添加了一個值為12的屬性age
,訪問p1.age
時會直接訪問到這個屬性而不會去原型鏈上找p1.age
時會直接訪問到這個屬性而不會去原型鏈上找age
,如果要實現p1 p2都改變,可以這麼寫