关于"原型","原型链"的理解?
原型:每一个构造函数都有一个prototype属性指向一个对象,这个对象就是构造函数实例的原型
原型链:每一个实例都有一个__proto__属性执行原型对象,来获取原型对象上的属性和方法,原型对象也有一个__proto__
属性指向另外一个原型对象,以此类推,直到原型链的最终端null为止,这个串成链的过程就是原型链
特点:实现继承 一个对象可以拿到另一个对象上的属性和方法
构造函数都有一个prototype属性指向原型对象
原型对象都有一个consttuctor属性指向构造函数
构造函数new实例化实例对象
实例对象上有__proto__属性指向原型
验证原型链代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> // 构造函数 实例对象 原型对象 // 1.创建构造函数 function Person(){} // 2.实例化对象 var gd = new Person(); // console.log(gd) // 3.直接打印person原型对象 console.dir(Person) console.dir(Person.prototype) // 在person.prototype上也存在__proto__; // 说明: 原型对象也是另外一个构造函数通过new实例化得到的 // 验证: Object 是不是Person.prototype的构造函数 console.log(Person.prototype.__proto__.constructor === Object); // ture console.log(Person.prototype.__proto__ === Object.prototype); // true // 验证原型链之间的关系是否存在 console.log(Object.prototype); console.log(Person.prototype.toString()); console.log(gd.toString()); </script> </body> </html>
关于原型链的逻辑图:

浙公网安备 33010602011771号