JavaScipt原型

2020-07-04  本文已影响0人  Poppy11

我们先定义一个构造器(函数):

function People(a,b,c){
    this.height = a;
    this.weight = b;
    this.age = c;
}

原型对象

原型是个很抽象的概念,因为我们并不能看到它。当定义了一个构造器(也就是创建一个函数)的时候,就会产生一个原型对象。这个构造器所构造的对象,都会从原型对象中继承到属性,方法等,我们定义一个小明‘xiaoming’对象,并打印出来:

var xiaoming = new People(170,60,18);
console.log(xiaoming);

在控制台可以看到:

image

检查小明对象的proto属性,也就是小明对象的构造器的原型对象,我们会发现它实际上就是上面我们看过的People构造器的原型对象(People.prototype)。

那么什么是原型链呢?

其实理解了原型,就很好理解原型链了,我们发现小明对象继承自People构造器的原型对象,而People构造器的原型对象又是从哪继承的呢?

__proto__:Object

object(对象)就是People原型对象的构造函数,点开它会发现它不再拥有proto属性了,也就是它的proto属性是null,这就说明寻找构造函数到头了,这就是所谓的原型链的终点。
事实上,随便定义一个对象:

var xiaohei = {
    height:180,
    weight:80,
    age:20
}

然后去控制台打印出来:

console.log(xiaohei);

会显示:

image

它并没有一个构造函数,它的原型对象的构造函数就是object构造函数,事实上在JavaScript中不管什么对象,只要顺着它的proto属性往上寻找,就必然会回到object构造函数,也就是说JavaScript中任何对象都是object的实例。这就是原型链。

上一篇 下一篇

猜你喜欢

热点阅读