浅谈面试中经常被问的原型和原型链

本文深入探讨了JavaScript中的原型概念,包括所有引用类型对象的__proto__属性和函数的prototype属性。通过示例展示了如何创建和使用原型,特别是数组和自定义函数的原型。此外,还详细解释了原型链的工作原理,即当查找对象属性时,沿着__proto__链向上搜索的过程。文章最后提供了一个生动的比喻来帮助理解这一概念。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、原型是什么?

示例:1.所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
2.所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
3.所有引用类型的__proto__属性指向它构造函数的prototype

二、原型链

1.原型的形式

代码如下(示例):

**数组的原型**:
var a = [1,2,3];
a.__proto__ === Array.prototype; // true

**函数的原型**:
function Person(name) {
    this.name=name;
}
Person.prototype.eat=function () {
    console.log(this.name+"吃东西");
};
Person.prototype.sleep=function () {
    console.log(this.name+"睡觉");
}
var p1=new Person("小明");
p1.eat();//小明吃东西
p1.sleep();//小明睡觉
var p2=new Person("小利");
p2.eat();//小利吃东西
p2.sleep();//小利睡觉
console.dir(p1);
console.dir(p2);

2.原型链

代码如下(示例):

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链

总结

提示:这里对文章进行总结:
__proto__指向该对象所在的构造函数的原型对象。
实例对象和构造函数之间没用直接的关系。原型对象与实例对象之间用原型(proto)关联,这种关系叫做原型链。
我是这样理解原型链的(可能不是很准确)我向我爸要零花钱,我爸也没有钱,那么我就向我奶奶要,奶奶要是也没有,就继续找别人要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值