function Person(name,age){
?? ????this.name = name
?? ??? this.age = age
}var p = new Person('张三',11)
?? ??? ?
//创建构造函数的时候,解析器会自动为构造函数创建prototype属性,prototype属性对应的对象就是原型对象
?? ??? ?
// prototype 翻译为 原型
?? ??? ?
// prototype 用于定义构造函数创建的实例对象 所共享的属性和方法
?? ??? ?
console.log(Person.prototype === p.__proto__) //true
?? ??? ?
// ECMAScript 标准 是 Object.getPrototypeOf()
?console.log(Person.prototype === Object.getPrototypeOf(p)) ?//true
?? ??? ?
console.log(Person.hasOwnProperty('name')) //true
?? ??? ?
console.log(p.hasOwnProperty('name')) //true
?? ??? ?
Person.prototype.sex = '男'
?? ??? ?
console.log(Person.hasOwnProperty('sex')) //false
?? ??? ?
console.log(Person.prototype.hasOwnProperty('sex')) //true
?? ??? ?
console.log(p.hasOwnProperty('sex'))?? ?//false
?? ??? ?
console.log(p.__proto__.hasOwnProperty('sex'))?? ?//true// 原型链是一种对象之间通过原型关系关联行程的链式结构
// 原型链的查找方向
// p.__proto__ ? Person.prototype ? Object.prototype? ? ? ?
?? ??? ?