目前正在學JS的原型思想(準確的說是從昨天2018.1.29開始正式接觸),琢磨了兩天,在chrome的console不停的敲了好多代碼測試__proto__和prototype的關係,有了些小收穫(見下圖,俗話說,具體的東西比抽象的更容易吸收,所以我就畫了一張圖)。 圖解:不同顏色線互不相交,同種 ...
目前正在學JS的原型思想(準確的說是從昨天2018.1.29開始正式接觸),琢磨了兩天,在chrome的console不停的敲了好多代碼測試__proto__和prototype的關係,有了些小收穫(見下圖,俗話說,具體的東西比抽象的更容易吸收,所以我就畫了一張圖)。
圖解:不同顏色線互不相交,同種顏色線表示一種指向。
代碼:
function Person(name){ this.name=name; } //上面代碼,創建了一個名為Person的構造器(如果一個函數用於創建對象的話叫構造器) //JS中的函數本質是對象,即使typeof Person == "function",所以Person才會有下圖中的__proto__等屬性 //只有函數才有prototype屬性 var Jim=new Person("Jim"); //上面代碼創建了一個名字叫做Jim的對象,即Person的一個實例
//對於Array() Number() Date()等等的內置構造器等級和Person()一樣 //對於像Array()創建的一個數組對象,等級和Jim對象一樣 //所以有 var a=new Array(); console.log(a.__proto__.__proto__ == Object.prototype); //輸出 true
附上一句真誠的話:
目前的JS原型學習只是剛剛開始,並且,一有收穫就會總結並且發在博客上,所以,錯誤或迷惑之處懇請指正,不要噴,畢竟畫幅圖、以文字語言總結都不容易啊。