js原型和原型链详解

本文探讨了JavaScript中的原型和原型链概念。每个函数都有一个prototype属性,创建的对象通过_proto_属性指向构造函数的原型对象。原型对象作为共享属性和方法的公共空间,允许实例共享属性。构造函数在JavaScript中用于创建对象,而原型链则决定了对象属性的查找顺序。当访问对象的属性时,会沿着原型链向上搜索,直到找到属性或达到链的末端。总结关键点:1) 原型增加的属性确实存在;2) 函数自身的属性优先于原型;3) 原型对象提供公共属性访问。

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

原型和原型链详解

原型是js学习的一个难点,如果学习不深入,会特别头疼。查过很多资料对原型有了较深的了解,今天就谈下我对原型的认识。

1.原型对象

我们所创建的每一个函数,解析器都会向函数添加一个属性prototype,这个属性对应一个对象,这个对象就是我们所说的原型对象。
当函数以构造函数的形式调用时,他所创建的对象中都有一个隐含的属性指向该构造函数的原型对象,我们可以通过_proto_来访问该属性。
原型对象就相当于一个公共的空间,所有的同一类中的实例都可访问到这个原型对象
因此,我们可以将对象共有的内容都统一的设在原型对象中。
## 2.构造函数
说到原型,就不得不提到构造函数。

什么是构造函数

  在 JavaScript 中,用 new 关键字来调用的函数,称为构造函数。构造函数首字母一般大写。

下面看一个例子

function fun(){
var name;
var say;
}
fun.prototype.name="小明";
fun.prototype.say=function(){
  alart("我是小明");
}
var Fun =new fun();
console.log(Fun.name);
Fun.say();
//通过原型增加的属性或方法的确是存在的.

运行结果展示:
在这里插入图片描述
在这里插入图片描述

补充:函数对象本身的属性和方法的优先级要高于原型的属性和方法;

function fun(){
var name="小红";
var say=function(){
alarat("我是小红")};
}
fun.prototype.name="小明";
fun.prototype.say=function(){
  alart("我是小明");
}
var Fun =new fun();
console.log(Fun.name);
Fun.say();
//运行结果
//我是小红,可以得出函数对象本身的属性和方法的优先级要高于原型的属性和方法;

原型链

javascript对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象原型的原型,一次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾
总结:
1.通过原型增加的属性或方法的确是存在的.
2.函数对象本身的属性和方法的优先级要高于原型的属性和方法
3.原型对象就相当于一个公共的空间,所有的同一类中的实例都可访问到这个原型对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值