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进阶深入系列专题系列(涉及原型作用域执行上下文变量对象this闭包按值传递callapplybindnew继承等