Categories
程式開發

徹底深刻理解js原型鏈之prototype,proto以及constructor(一)


前言

以下概念請花費一定的時間徹底理解,才能進行下一步,思考題一定要思考,這樣才能徹底掌握原型鏈的知識點,教程中如果有任何的錯誤不足請指正!

函數對象

由function創造出來的函數,比如:

    function a(){};
    var b=function(){};

系統內置的函數對象

Function,Object,Array,String,Number

只有函數對象才有prototype屬性,重要的事情說三遍!

思考: js的引用數據類型都屬於函數對象嗎?

普通對象

除開函數對象之外的對像都是普通對象

var b='qwe'; // b 是字符串类型,属于普通对象
var c=123;; // c 是数字类型,属于普通对象

思考:js有五種基本類型:Undefined,Null,Boolean,Number和String,他們都是屬於普通對象嗎?

原型對象

prototype屬性也叫原型對象,主要是為了實現繼承和共享屬性;

可以說我們的每一次編程,內在都有原型對象來發揮著作用,如果你沒有掌握原型對象的含義,那麼你的js還沒有真正的入門!

function a(){};

首先對象a 是由Function創造出來,是函數對象;那麼根據我們以上的教程,a 就有了prototype屬性,那麼這個原型對像是怎麼創造出來的呢? 來看下面這個例子:

var temp = new a();
a.prototype=new Object();
a.prototype = temp;

那麼a的prototype屬性就是這樣創造出來的;

思考:原型對象prototype 屬於函數對象嗎?

原文鏈接:【https://www.infoq.cn/article/lXtBrMtRPmzcbLHEHFYN】。未經作者許可,禁止轉載。