JavaScript之对于prototype和_proto_的理解

本文深入探讨JavaScript中函数对象的prototype属性与普通对象的_proto_属性,通过具体示例阐述了它们的作用及如何实现继承。

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

        学习了JavaScript,觉得有必要对函数对象的prototype属性和普通对象的_proto_属性着重理解一下。
         首先,万物皆对象。而对象又可分为函数对象和普通对象,当我们去用New Function()的时候,创建的就是函数对象。除开这种情况其他的都是普通对象,就如以下例子:
 
// 
var f1=function(){};
var function f2(){};
var f3=new Function('a','b');
//  
var o1={};
var o2=new f3();
var o3=new Object();
     其中f1,f2归根结底还是用New Founction去创建的,所以是函数对象。
     对于函数对象才有prototype属性,这个属性就是原型对象,这个原型对象其实就是一个普通对象(Function.prototyp除外),它没有prototype属性 
 
function f1(){};
console.log(f1.prototype) //f1{}
console.log(typeof f1.prototype) //Object
 
      从以上第二行代码可以看出,f1.prototype就是f1的一个实例对象 。就是在创建f1的时候,创建了他的一个实例对象并赋值给他的prototype属性,如下:
 
 var te=new Function();
 Function.prototype=te;
 
      那么,这个属性有什么作用呢?继承作用,相当于将函数对象的公有属性放在prototype中,那么函数对象的实例会共享这些属性。
 
var function f1(name){
    this.name;
}
f1.prototype.getName=function(){
    return this.name;
}
var hty=new f1('hutianyi');
hty.getName();//hutianyi
 
     再说说_proto_属性,这个属性指向的是创建这个对象的函数对象的prototype属性,一层一层的对象继承就是以prototype为实体_proto_为连接纽带实现的。把这个有_proto_串起来的直到Object.prototype._proto_为null的链叫做原型链。
     
     总结
     1.原型和原型链是JS实现继承的一种模型。
     2.原型链的形成真正是靠_proto_而非prototype 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值