原型练习题
const fn = new Function('console.log(123)')
fn()
function Person(name, age) {
this.name = name
this.age = age
}
Person.prototype.sayHi = function () {
console.log('你好~~~')
}
const p1 = new Person('QF001', 18)
console.log(p1.__proto__ === Person.prototype) //true
console.log(Person.__proto__ === Function.prototype) //true
console.log(Person.prototype.__proto__ === Object.prototype) //true
console.log(Function.__proto__ === Function.prototype) //true
console.log(Function.prototype.__proto__ === Object.prototype) //true
console.log(Object.__proto__ === Function.prototype) //true
console.log(Object.prototype.__proto__) //null
1.p1 的 __proto__ 指向谁
__proto__ 指向自己构造函数的原型
所以相当于指向了 Person.prototype
p1.__proto__ === Person.prototype
2.Person 的 __proto__ 指向谁
Person 是一个构造函数,构造函数本质上就是一个函数而已
在JS中,只要是一个函数,那么就属于构造函数Function实例化对象
__proto__ 指向自己构造函数的原型
所以相当于指向了 Function.prototype
Person.__proto__ === Function.prototype
3.Person.prototype 的 __proto__ 指向谁
Person.prototype 是Person构造函数的原型,本质上就是一个对象而已
在JS中,只要是一个对象,那么就属于构造函数Object的实例化对象
__proto__ 指向自己构造函数的原型
所以相当于指向了 Object.prototype
Person.prototype.__proto__ === Object.prototype
4.Function 的 __proto__ 指向谁
Function是一个构造函数,构造函数本质上就是一个函数而已
在JS中,只要是一个函数,那么就属于构造函数Function实例化对象
__proto__ 指向自己构造函数的原型
所以相当于指向了 Function.prototype
Function.__proto__ === Function.prototype
5.Function.prototype 的 __proto__ 指向谁
Function.prototype 是 Function构造函数的原型,本质上就是一个对象而已
在JS中,只要是一个对象,那么就属于构造函数Object的实例化对象
__proto__ 指向自己构造函数的原型
所以相当于指向了 Object.prototype
Function.prototype.__proto__ === Object.prototype
6.Object 的 __proto__ 指向谁
Object 是一个构造函数,构造函数本质上就是一个函数而已
在JS中,只要是一个函数,那么就属于构造函数 Function 实例化对象
__proto__ 指向自己构造函数的原型
所以相当于指向了 Function.prototype
Object.__proto__ === Function.prototype
7.Object.prototype 的 __proto__ 指向谁
因为 Object.prototype 是JS 的顶层对象,再往上就没有了,所以这个值为null
console.log(Object.prototype.__proto__) //null