一、构造函数如何创建对象?
话不多说,直接上例子
function Person() {
}
var person = new Person(); //通过new实例化构造函数,生成一个实例对象 ‘person’
person.name = 'iwen';
console.log(person.name) // iwen
二、prototype 实例原型
每个函数都有一个 prototype 属性,这个属性指向的就是我们所说的原型对象
也就是说,函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数
而创建的实例的原型
例子来了
function Person() {
}
const pty = Person.prototype; //pty我们可以称为 实例原型
var person = new Person(); // person 我们可以称为 实例
三、原型链__proto__
这是每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__
这个属性会指向该对象的原型。
例子来了
function Person() {
}
const pty = Person.prototype; //pty我们可以称为 实例原型
var person = new Person(); // person 我们可以称为 实例
person.__proto__ === pty; //true
- 说明实例的__proto__属性 等于 构造函数的prototype
四、 constructor
每个原型都有一个 constructor 属性指向关联的构造函数
例子
function Person() {
}
const pty = Person.prototype; //pty我们可以称为 实例原型
pty.constructor === Person; //true
五、 实例与原型的关系?
当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性
如果还查不到,就去找原型的原型,一直找到最顶层为止。
一、结语
感谢各位老铁,点赞加关注