美文网首页
原型和原型链

原型和原型链

作者: HTFfeifei | 来源:发表于2019-03-23 18:23 被阅读0次

原型链分享

原项链详解

什么是原型链:

javaScript  常被描述为一种基于原型的语言(prototype-based language) ——每一个对象拥有一个原型对象,对象以其原型为模版,从原型通过(_proto_)属性继承方法和属性,原型对象也是对象也拥有自己的原型对象并从中通过(_proto_)属性继承方法和属性,一层一层,以此类推。这种靠(_proto_)属性串起来的关系被称为原型链(prototypechain),它解释了为什么一个对象会拥有定义在其他对象中的属性和方法。

概念理解

对象包括普通对象和函数对象,

1,什么是函数对象?

2 什么是普通对象?

原项链的起源
到底是先有的鸡还是先有有的蛋呢 ?还是无中生有呢?

疑问一:谁是JS的起源?

整个js起源于 Object和Function两个类。

疑问二:

 Object和Function系统自带的函数对象,谁创建的谁呀?

没有谁创建的谁,Object和Function分别被定义的,同时产生的。

证据在哪?

1,Object 详解

Object.prototype详解

几乎所有的 JavaScript 对象都是 Object 的实例;一个典型的对象继承了Object.prototype的属性(包括方法),尽管这些属性可能被遮蔽(亦称为覆盖)。但是有时候可能故意创建不具有典型原型链继承的对象,比如通过Object.create(null)创建的对象,或者通过Object.setPrototypeOf方法改变原型链。

改变Object原型,会通过原型链改变所有对象;除非在原型链中进一步覆盖受这些变化影响的属性和方法。这提供了一个非常强大的、但有潜在危险的机制来覆盖或扩展对象行为。

只有两个属性constructor指向它所属的函数对象的名称Object()._proto_指向null对象

new Object () 生成的实例结果决定了其prototype属性所指的原型对象的类型。

2,  Function 详解

new Function () 生成的实例结果决定了其prototype属性所指的原型对象的类型。

3 Object和Function 是怎么联系在一起的呢?

4,原型关系图

typeof 基本的类型

instantof 是不是在同一个原型上

定义在constructor和prototype的属性和方法都会被继承到实例对象。定义在在对象的方法不会被继承。

相关文章

网友评论

      本文标题:原型和原型链

      本文链接:https://www.haomeiwen.com/subject/pjwsvqtx.html