徹底搞懂js proto

2022-06-09 07:12:09 字數 2201 閱讀 4410

在開始之前,必須要知道的是:物件具有__proto__、constructor(函式也是物件固也具有以上)屬性,而函式獨有prototype

在看到一張圖分析到位很徹底,這裡共享:

剛開始看這圖很懵,根本看不懂,但是細品,多品後恍然大悟,然後總結出以下幾點,很重要切記

1、切記:物件的內建屬性__proto__一定指向的是它建構函式的原型物件

2、切記:物件的內建屬性__proto__.__proto__一定指向object原型物件(object.prototype)

3、切記:物件的內建屬性__proto__.__proto__.__proto__一定最終為null

4、切記:每個函式都具有獨有的prototype,這個物件包含了此函式的所有例項共享的屬性和方法(函式=》物件)

5、切記:物件的屬性__proto__指向的是其建構函式的原型物件(物件=》物件),而物件的屬性constructor指向的是其建構函式(物件=》函式)

一定要把上面幾句徹底搞懂,然後隨便上幾個例子

var abc = {};

var abc1= "111";

var abc2=123;

function abc3(){}

var abc4=new date();

function acfun(){};

var abc5=new acfun();

看列印結果:

console.log(abc.__proto__ === object.prototype);  //true

console.log(abc1.__proto__ === string.prototype); //true

console.log(abc2.__proto__ === number.prototype); //true

console.log(abc3.__proto__ === function.prototype); //true

console.log(abc3.prototype.__proto__ === object.prototype); //true

console.log(abc4.__proto__ === date.prototype); //true

console.log(abc5.__proto__ === acfun.prototype); //true

console.log(acfun.prototype.__proto__ === object.prototype); //true

console.log(acfun.__proto__ === function.prototype); //true

console.log(abc4.__proto__.__proto__ === object.prototype); //true

console.log(abc4.__proto__.__proto__.__proto__ === null); //true

console.log(abc3.constructor === function); //true

console.log(abc5.constructor === acfun); //true

console.log(abc3.constructor.__proto__=== function.prototype); //true

console.log(abc3.constructor.__proto__.__proto__ === object.prototype); //true

console.log(abc3.prototype.__proto__.constructor === object); //true

console.log(acfun.prototype.constructor === acfun); //true

console.log(acfun.__proto__.constructor === function); //true

最後總結:所有物件都有屬性__proto__及constructor(包括函式),只有函式獨有prototype,所有物件的__proto__都指向其建構函式的原型(物件),consturctor指向的其建構函式(函式),而函式的prototype則指向其函式原型物件(物件),及f1.__proto__ === foo.prototype、f1.constructor === foo

徹底搞懂px em rem

px畫素 pixel 相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。px特點 em是相對長度單位。相對於當前物件內文字的字型尺寸。如當前對行內文字的字型尺寸未被人為設定,則相對於瀏覽器的預設字型尺寸。em特點 注意 任意瀏覽器的預設字型高都是16px。所有未經調整的瀏覽器都符合 1em 16...

徹底搞懂parseInt

parseint 72.45 8 2 8 1 7 8 1 4 8 1 5 8 2 2 1 7 8 4 1 8 5 1 8 8 58.578125 parseint 231 3 3進製只能是0 2,所以查詢到3的時候,發現已經不是3進製的範疇了,則不再繼續查詢 把2當做3進製,最後轉為10進製 2 3...

徹底搞懂Python元組

x 1 2,3 直接把元組賦值給乙個變數 type x 使用type 函式檢視變數型別 class tuple x 空元組 x tuple 空元組 tuple range 5 將其他迭代物件轉換為元組 0 1,2 3,4 x 0 元組支援使用下標訪問特定位置的元素 1 x 1 最後乙個元素,元組也支...