js高階-原型鏈
阿新 • • 發佈:2021-12-31
(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