JavaScript 原型 原型链

166 阅读1分钟

个人笔记-仅供参考

构造函数 constructor

描述:\underline{描述:}
在 JavaScript 中,用 New 关键字来调用的函数,称为构造函数。通常该函数采用首字母大写(大驼峰)的方式命名。每个构造函数都拥有一个prtotype属性。

function Person (name, age) {
    this.name = name;
    this.age = age;
}
const person = New Person('张三', 28)

原型对象

描述:\underline{描述:}
在声明一个构造函数后,浏览器会自动按一定的规则创建一个对象,这个对象就叫做原型对象。

__ proto __

描述:\underline{描述:}
每个对象都拥有一个隐藏属性__proto__,指向它的原型对象。

概括

  • 每个构造函数都拥有一个prototype属性,这个属性指向一个对象,这个对象就是原型对象。
  • 原型对象中默认拥有一个constructor属性,指向它的构造函数。
  • 每个对象都拥有一个隐藏属性__proto__,指向它的原型对象。


/**
* prototype : 原型
* __proto__ : 原型链(原型的链接点)
*
* 从属关系
* prototype -> 函数的一个属性 : 对象 {}
* __proto__ -> 对象Object的一个属性 : 对象 {}
* 对象的__proto__保存着该对象的构造函数的prototype
*/

function Person(){};

var person = new Person();

person.__proto__ === Person.prototype;  // true

Person.prototype.constructor ==== Person; // true

原型链

描述:\underline{描述:}
Function 和 Object 是两个函数。
__proto__将对象和原型连接起来组成的原型链。
所有函数的__proto__都指向 Function 原型对象。
JS的原型链最终指向的是Object的原型对象(Object.prototype)

constructor.png

call()