JavaScript的原型与继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的原型与继承相关的知识,希望对你有一定的参考价值。

首先,什么是原型:

javascript里所有函数,变量方法都是对象,而对象对应的就是原型(prototype).

所以以此来看,JS里任何的对象都有一个原型对象,而默认的原型对象就处在原型链的最顶端。

现在说到了一个新的概念,什么是原型链?

在JavaScript中,一共有两种类型的值,原始值和对象值.每个对象都有一个内部属性[[prototype]],我们通常称之为原型.原型的值可以是一个对象,也可以是null.如果它的值是一个对象,则这个对象也一定有自己的原型.这样就形成了一条线性的链,我们称之为原型链.

通俗的来说,就是一个对象在创建之后,他实际上是继承它的原型链最顶端的属性的。

那么现在有一个简单的问题,应该如何解答呢?

function a () {

var c =123;

c.prototype = 12;

var b = new c();

return b;

}

上面只是用伪代码的方式,询问了一个问题,那么B的值究竟是什么呢?

答案是:123;

因为根据原型链的定义,JS解释器首先按照原型链,自下而上的查找对象的属性值,那么在最下部查找时,就会发现并返回var c=123这个值。

那么现在变一下,不给对象C赋值,直接获取C的值呢?那么答案就会变成12,因为当解释器找不到赋值时,会自动向上查找,此时它发现C的原型上居然有值12,那么就取出返回给函数。

 

以上是关于JavaScript的原型与继承的主要内容,如果未能解决你的问题,请参考以下文章

继承干货

JavaScript对象原型链继承闭包

JavaScript对象原型链继承和闭包

JavaScript中高级进阶推荐一个JavaScript进阶深入系列专题系列(涉及原型作用域执行上下文变量对象this闭包按值传递callapplybindnew继承等

javascript中的经典继承与原型继承

JavaScript的原型与继承