Javascript笔记 - 原型,原型指针,原型链

Javascript笔记 - 原型,原型指针,原型链

在javascript中,每个函数都会初始化一个属性,原型(prototype),当我们需要访问这个函数的某个属性时,就会去到prototype中寻找这个属性,若没有找到这个属性,prototype中也存在自己的prototype,于是乎就这样一直往上找,这就是原型链的概念。

原型本身也是一个对象,内部存在一个原型指针(_proto_)构造器指针(_constructor_)

  1. 原型指针:指向所继承对象的原型属性
  2. 构造器指针:指向自己本身

原型链的特点:
Javascript的对象都是通过引用传递的,我们创建新对象的时候并没有一份属于对象本身的原型副本,都是通过不断的往上继承而来的,当我们修改原型时,与之相关的对象也会继承这一改变。
当我们需要用到一个对象的属性时,就会通过原型链不断往上寻找,直至追朔到内置的Object对象,依然找不到,则返回undefined。

代码例子:

// 创建一个函数(类)
function fn() { };

//创建该函数的实例对象
var fn1 = new fn();

console.log(fn1.__proto__ === fn.prototype); // 结果为true,原型指针指向上一个继承类的原型属性

console.log(fn.__proto__ === Function.prototype); // 结果为true,函数为Function类的实例对象

console.log(fn.prototype.__proto__ === Object.prototype); // 结果为trueprototype自己本身也是一个对象
console.log(fn.prototype.__constructor__ === fn()); // 结果为true,构造器指针指向自己本身

你可能感兴趣的:(Javascript笔记 - 原型,原型指针,原型链)