為何用“繼承”為標(biāo)題,而不用“原型鏈”?
原型鏈如果解釋清楚了很容易理解,不會(huì)與常用的java/C#產(chǎn)生混淆。而“繼承”確實(shí)常用面向?qū)ο笳Z言中最基本的概念,但是java中的繼承與javascript中的繼承又完全是兩回事兒。因此,這里把“繼承”著重拿出來,就為了體現(xiàn)這個(gè)不同。
javascript中的繼承是通過原型鏈來體現(xiàn)的。先看幾句代碼
上圖中,訪問f1.b時(shí),f1的基本屬性中沒有b,于是沿著proto找到了Foo.prototype.b。
那么我們在實(shí)際應(yīng)用中如何區(qū)分一個(gè)屬性到底是基本的還是從原型中找到的呢?大家可能都知道答案了——hasOwnProperty,特別是在for…in…循環(huán)中,一定要注意。
更多建議: