js-原型

作者: YellowPoint | 来源:发表于2019-07-11 17:22 被阅读0次

首先从题目来检查下掌握程度

let Person = function(){
  this.name = 'Person'
}
Person.prototype.age = 22
let p1 = new Person()

问题是以下都是结果是什么 
1. p1.__proto__
2. Person.__proto__
3. Person.prototype.__proto__
4. Object.__proto__
5. Object.prototype.__proto__
6. Function.__proto__  
7. Function.prototype
8. Function.prototype.__proto__    
9. p1.constructor
10. Person.prototype.constructor
11. Person.constructor
12. Function.constructor
13. Object.constructor





1. p1.__proto__ === Person.prototype
2. Person.__proto__ === Function.prototype
3. Person.prototype.__proto__ === Object.prototype
4. Object.__proto__ === Function.prototype
5. Object.prototype.__proto__ === null
6. Function.__proto__  === Function.prototype
7. Function.prototype 是唯一一个prototype是function的构造器,且其__proto__指向Object.prototype,
8. Function.prototype.__proto__ === Object.prototype
9. p1.constructor === Person
10. Person.prototype.constructor === Person
11. Person.constructor === Function
12. Function.constructor === Function
13. Object.constructor === Function
  1. 所有对象的 __proto__ 都指向其构造器的 prototype
  2. Function.prototype也是唯一一个typeof XXX.prototype为 function的prototype。其它的构造器的prototype都是一个对象
  3. 只有函数对象才有 prototype 属性
  4. 每个对象都有一个 constructor 属性,可以获取它的构造器
  5. 所有的构造器都来自于 Function.prototype,甚至包括根构造器Object及Function自身。
  6. 实例的构造函数属性(constructor)指向构造函数。
  7. 凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
  8. 连接存在于实例(p1)与构造函数(Person)的原型对象(Person.prototype)之间,而不是存在于实例(p1)与构造函数(Person)之间。
  9. instanceof的原理是判断实例对象的proto和构造函数的prototype是否是同一个引用
  10. 关系图,图中由相互关联的原型组成的链状结构就是原型链,也就是蓝色的这条线 原型链

相关文章

网友评论

      本文标题:js-原型

      本文链接:https://www.haomeiwen.com/subject/enndkctx.html