编辑
2023-03-22
JavaScript
0
请注意,本文编写于 575 天前,最后修改于 555 天前,其中某些信息可能已经过时。

目录

相关概念
共有属性:
自有属性:
对象的创建方式
构造函数(对象模板)
new关键字做了哪几件事?
原型概念
注意
继承
补充
隐式原型
原型链
描述图
过程解析Eg

相关概念

共有属性:

由同一构造函数创建出来的对象共同享有的属性

自有属性:

属于对象实例私有的属性

对象的创建方式

  • 对象字面量
  • new 构造函数

构造函数(对象模板)

专门用来创建相同结构对象的专门方法
构造函数通常使用首字母大写
构造函数必须使用new关键字调用

new关键字做了哪几件事?

1.创建了一个空对象 var ll={}
2.改变this指向 [由call和apply改变]
3.加属性 this.name="小明" this.age=18
4.返回一个全新的对象 return ll

任何对象没有权利修改原型中的属性,只要构造函数本身可以更改

原型概念

构造函数中,专门用来存放共有属性的

注意

只有函数才具备prototype属性

继承

使用现有类型,创建出新的类型,新的类型可以使用现有类型的属性和方法,也可以拓展出现有类型没有的属性和方法【在原型中添加属性,后面由原型创建出来的对象中再次使用属性,则视为继承】

补充

Array:所有数组的父类
Function:所有函数的父类
Object:所有对象的父类

隐式原型

_proto_: 隐士原型

任何一个对象都有隐式原型,用来实现继承的
一个对象的隐式原型默认指向创建该对象的构造函数的原型对象

原型链

每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系称之为原型链

描述图

原型链

过程解析Eg

以函数Foo为起点

function Foo() {}
  1. 函数Foo的原型指向原型对象Foo.prototype
    原型链1

2.Foo作为函数,由构造函数Function构造出来,所以隐式原型指向为Function.prototype的原型对象
原型链2

3.Function本身也是函数,所以function Function()的原型对象为Function.prototype
原型链3

  1. 对于原型对象Function.prototype,本身作为对象,由Object构造而来
    原型链4

本文作者:RKLS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!