JS的基础知识学习(二)(原型和原型链的基础理论)

本文深入探讨JavaScript中函数与对象的关系,解释原型和原型链的概念,包括显示原型prototype和隐式原型_proto_,以及Function和Object在JS中的地位。同时阐述了函数.prototype的含义,以及实例对象与构造函数、原型之间的关系。通过实例展示了如何理解和利用原型链进行继承。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.函数与对象的关系

  • 函数是对象,对象都是通过函数创建的
  • 函数与对象并不是简单的包含与被包含的关系

2.原型的类别

  • 显示原型:prototype,是每个函数function独有的属性
  • 隐式原型:_proto_,是每个对象都具有的属性

3.原型和原型链

原型:一个函数可以看成一个类,原型是所有类都有的一个属性,原型的作用就是给这个类的一个对象都添加一个统一的方法

原型链:每个对象都有一个_proto_,它指向它的prototype原型对象,它的prototype原型对象又有一个_proto_,指向它的prototype原型对象,就这样层层向上直到最终找到顶级对象Object的prototype,这个查询路经就是原型链

4.js里面最顶层的两个概念

(1)Function是最顶层的构造器

Function是js里面最顶层的构造器,它构造了系统中的所有对象,包括用户自定义对象,系统内置对象,甚至包括它自己

(2)Object是最顶层的对象

所有对象都继承Object的原型

Object也是被Function构造出来的

5.函数.prototype

(1)每个函数都自带一个属性叫做prototype

每个函数其实有个prototype属性,prototype的属性值是一个对象,这个对象默认的只有一个叫做constructor的属性,指向这个函数本身

(2)在js中,每一个函数都有一个prototype属性,这个属性指向函数的原型对象。需要注意的是它的prototype属性也是一个对象!每个对象都有一个__proto__属性。每个js对象的__proto__属性都会指向该对象的原型对象,并从原型对象上继承属性和方法。

  per是实例对象,它的构造函数是Person,它的原型对象是Person.prototype  所以实例对象的__proto__属性(per.__proto__)会指向它的原型对象(Person.prototype)

        //构造函数
        function Person(){
 
        }
        //实例对象
        var per=new Person();
//实例对象的__proto__属性指向其原型对象
console.log(per.__proto__===Person.prototype); //true

6.总结

实例.__proto__ === 原型

原型.constructor === 构造函数

构造函数.prototype === 原型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值