1. 程式人生 > 其它 >js高階-原型鏈

js高階-原型鏈

(1)所有的例項物件都有隱式原型屬性/在被創造時就新增到該物件上

(2)(所有)函式都是例項物件,他們都有_proto_,並且指向Function.prototype // 甚至包括廣義的函式

function Foo(){} 函式本質上可以看成是function型別的建構函式new出來的新物件 let Foo = new Function()

(3)因為任意函式都是由Function new出來的,所以都是他的例項物件

都滿足例項物件._proto_ === Function.prototype

String.__proto__===Function.prototype//true
Number.__proto__===Function.prototype//
true Boolean.__proto__===Function.prototype//true Object.__proto__ === Function.prototype//true 任意函式的__proto__都===Function.prototype

(4)Function 是一切函式的建構函式

所有函式都可以用Function建構函式方式定義

var add = new Function(
  'x',
  'y',
  'return x + y'  // 最後一個傳入的引數是定義的函式體
);

// 等同於
function add(x, y) {
  return x + y;
}

重要!(5)關於Function 本身的原型

因為function本身是一個函式物件例項,所以它有_proto_,和其他函式例項一樣,指向Function.prototype

又因為function是所有函式例項的建構函式,它有自己的prototype

所以function._proto === function.prototype === function.prototype