js原型链中prototype,__proto__的理解

js原型链中prototype,__proto__的理解(18年12.25)

今天开始认真重新过一遍js最基础的东西。话不多说,开始干货。

1,每一个构造函数都有一个属性prototype,它是一个指针,指向原型对象。
2,每一个实例对象都有一个 __oproto__的属性,同样,它也是一个指针,它也指向原型对象。
3,每一个原型对象都有一个constructor属性,它是一个指针,它指向它的构造函数。

接下来讲一下js中的继承,因为es5没有类的概念。
所以用原型继承来实现继承。直接上代码吧。

function father() {
    this.num = "123";
    this.fn = function () {
        console.log(this.num);
    }
}

father.prototype.str = "abc";

function child() {
    
}

child.prototype = new father();
var childObj = new child();
console.log(childObj.str);
childObj.fn(); 

可以知道改变了子构造函数的原型指针,使之指向新new的父对象。
这样新new的父对象就是子构造函数的原型对象。
当新new的子对象访问属性时,先查找自己实例的this是否有无,若没有就在原型对象中找,
原型对象也是同理,先找自己的this实例再再找原型对象里有没有,这样就实现了继承。

简单的来说是以下的图

任何原型对象都是继承的终点都是object。

猜你喜欢

转载自blog.csdn.net/qq_40646960/article/details/85255963