起初,地是空虛混沌,淵面黑暗;這時候一切還是null
神說,要有原型,於是就有了prototype
原型從憑空產生,於是需要乙個指向於null的特徵,人們把這種特徵叫做隱式原型
,即__proto__,其實也就一種指向,表達的是自己從何而來,也就是:object.prototype.__proto__ === null
「妖孽還不現出原型」
對,原型一般不顯露,顯露的一般都是乙個物件,所以才會有「物件的原型」一說,就好像每個妖精都有自己的原型一樣。
object與原型的關係
object通過prototype找到原型,原型通過constructor找到object,也就是:object.prototype.constructor === object
函式共有的特點
constructor的意思是構造器
,而此時的object還不能構造任何東西,因此object需要變成能構造物件的函式,這樣的函式我們稱之為建構函式
;而這樣的函式不會憑空產生,它首先得要是個函式,才能進行構造,也就是說會有條隱式原型
指向function.prototype,表示它是個函式;
同樣說明:只要是函式
,就有一條__proto__指向function.prototype,包括function自己;也就是:function.__proto__===function.prototype
一切的起源object.prototype
除了object.prototype是從null衍生而來,那其他原型呢?要知道,在object世界中沒有人是憑空產生的,object.prototype除開;
可以看到所有建構函式
的原型都是直接或間接來著object.prototype,而所有系統建構函式
的原型都直接來著於object.prototype;
眾所周知,js在找乙個物件裡面的屬性的時候,如果在該物件找不到,就會去該物件的__proto__裡面找,如果__proto__裡面找不到,就會去物件的__proto__.__proto__裡面找,直到找到null為止;
所以,換句話說,這裡的建構函式都直接或間接的繼承了object.prototype的屬性和方法,在類中,這些都相當於object.prototype的子孫類,所以,object.prototype才是一切的起源;
new做了啥?
例項化
通常是指用類建立物件的過程,而在js中例項化有三種常見方法:
工廠模式
function createobj()
let obj = createobj();
建構函式
function createobj(name, age)
let obj = new createobj("小公尺", 22);
原型模式
function createobj() {};
createobj.prototype= ;
let obj = new createobj();
這些例項化的方法無疑都用到了new,那new究竟在做了什麼呢?
其實new只做了三件很簡單的事
建立乙個空物件var obj = object.create(null);
讓這個物件繼承類的原型obj.__proto__ = createobj.prototype;
createobj建構函式的this指標替換成obj,然後再呼叫createobj函式createobj.call(obj);
現在第一步和第二是可以合併在一起的;var obj = object.create(createobj);
只要是函式
,就有一條__proto__指向function.prototype,包括function建構函式;
除了object.prototype從null而來,就沒有其他物件憑空產生了,絕對會有一條__proto__表明該物件的起源;
值得收藏的js原型詳解
不格網 vbuge.com 起初,地是空虛混沌,淵面黑暗 這時候一切還是null 神說,要有原型,於是就有了prototype 原型從憑空產生,於是需要乙個指向於null的特徵,人們把這種特徵叫做隱式原型,即 proto 其實也就一種指向,表達的是自己從何而來,也就是 object.prototyp...
JS 原型(prototype)詳解
首先來看一段 function c function f 在js中 function 關鍵字有兩個含義,既可以把它當作乙個普通函式關鍵字,也可以把它當作類的建構函式 即定義類 關鍵字。上面定義的兩個函式,不管你是想定義乙個類的建構函式還是就定義乙個普通函式。它們都包含乙個prototype和cons...
勵志的語句,值得收藏
1.我們太年輕 以致都不知道以後的時光竟然還有那麼長 長得足夠讓我忘記你 足夠讓我重新喜歡乙個人 就像當初喜歡你一樣 2。乙個人如果想做他喜歡的事情 就一定要做很多他不喜歡的事情 很多很多 3。我一點也不孤獨 因為我的世界只有我乙個人已經足夠熱鬧了 4。失敗的人有兩種 一種是什麼人的話都聼 一種是什...