1 ``` 2 function A(){//建立一個構造函數 3 4 } 5 6 A.prototype.testa = "aaaaa"; 7 let a1 = new A(); 8 let a2 = new A(); 9 let a3 = new A(); 10 11 console.log(a1.testa); 12 console.log(a2.testa); 13 console.log(a3.testa); 14 //解釋:經過實例對象來訪問testa,a一、a二、a3都能訪問到原型對象上的方法。 15 (這就是爲何推崇原型下編程)。 16 17 a1.testa = "bbbbb"; 18 //這時候單獨把a1的testa屬性改爲「bbbbb」,這只是單純的把a1本身屬性改爲「bbbbb」,原型下的屬性是不會受到影響的。
1 [].toString(); 2 console.log(Array.prototype);//原型下有toString方法; 3 4 //可是 5 function A(){ 6 7 } 8 var a = new A(); 9 console.log(a.toString);//也存在也能使用,可是 10 console.log(a.prototype);//下面沒有toString方法,那他爲何能使用呢? 11 //正是由於原型鏈的存在才能使用原型鏈上的toString方法。 12 13 console.log(a.prototype.__proto__);//下面九就有toString方法; 14 15 //強調(a.prototype)原型對象也是一個對象,因此往上找原型對象下的原型對象下就有可以使用的方法。 16 17 a.prototype.__proto__ == Object.prototype 18 //解釋:通俗來講a.prototype是Object的一個實例,也就是new 了一個Object。