javascript原型、原型链?有什么特点

每个函数都有一个==prototype==属性,函数的prototype属性指向了一个对象,这个对象正是调用该构造函数而创建的实例原型

那么什么是原型呢?你可以这样理解:每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型”继承”属性。

这是每一个javaScript对象(除了null)都具有的一个属性,叫proto,这个属性会指向该对象的原型。
在这里插入图片描述

原型链解决的主要是继承问题。
每个对象拥有一个原型对象,通过proto指针指向其原型对象,并从中继承方法和属性,同时原型对象也可能拥有原型,一样一层一层,最终指向null(Object.prototype.proto指向的是null)。
这种关系被称为原型链(prototype chain),通过原型链一个对象拥有定义在其他对象中的属性和方法。

1
2
3
4
5
function Person() {

}
var person = new Person();
console.log(person.__proto__ === Person.prototype); // true
1
2
3
4
function Person() {

}
console.log(Person === Person.prototype.constructor); // true
1
2
3
4
5
6
7
8
9
10
function Person() {

}

var person = new Person();

console.log(person.__proto__ == Person.prototype) // true
console.log(Person.prototype.constructor == Person) // true
// 顺便学习一个ES5的方法,可以获得对象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true
赏
× 请我吃糖~
打赏二维码