-
1. JavaScript函數是引用類型(對象類型), 所以Function函數也是對象
"Function構造函數"也是一個對象, 所以也有
__proto__
屬性-
"Function構造函數"
__proto__
屬性指向"Function原型對象"console.log(Function.__proto__); // ? () { [native code] } console.log(Function.__proto__ === Function.prototype); // true
-
2. JavaScript中還有一個系統提供的構造函數叫做Object, 只要是函數都是"Function構造函數"的實例對象
console.log(Object); // ? Object() { [native code] }
-
只要是對象就有
__proto__
屬性, 所以"Object構造函數"也有__proto__
屬性, "Object構造函數"的__proto__
屬性指向"Function原型對象"console.log(Object.__proto__); // ? () { [native code] } console.log(Object.__proto__ === Function.prototype); // true
-
-
3. JavaScript中只要是"構造函數"就有prototype屬性, "Object構造函數"的prototype屬性指向"Object原型對象"
console.log(Object.prototype);
-
4. JavaScript中只要是"原型對象"就有constructor屬性, "Object原型對象"中的constructor屬性指向它對應的Object構造函數
console.log(Object.prototype.constructor); // ? Object() { [native code] } console.log(Object.prototype.constructor === Object); // true
-
5. 只要是對象就有
__proto__
屬性, 所以"Object原型對象"也有__proto__
屬性, "Object原型對象"的__proto__
屬性指向NULLconsole.log(Object.prototype.__proto__); // null