函数也是对象
函数是由new Function创建出来的,因此函数也是一个对象,
所有的函数都是new Function的实例。
函数的原型链结构
画出下列代码的原型链结构
//var Person = new Function();
function Person(){
}
Function.prototype常用成员
- call:调用函数,重新指向this
- apply:调用函数,重新指向this
- bind:重新指向this,返回一个新的函数,不调用。
完整版原型链
绘制完整版原型链的目的是辅助大家理解js中对象的继承关系。
总结:
- 所有函数都是new Function创建出来的,因此
所有函数.__proto__都是Function.prototype - 所有对象都是new Object创建出来的,因此
所有对象.__proto__都是Object.prototyp
测试1:
Function.prototype === Function.prototype true
Object.__proto__ === Function.prototype true
Function.prototype.__proto__ === Object.prototype true
Object.prototype.__proto__ === Object.prototype false
Object.__proto__.__proto__ === Object.prototype true
测试2:
function Person() {}
var p = new Person()
console.log(p.constructor)
console.log(Person.constructor)