随笔 - 44,  文章 - 0,  评论 - 4,  阅读 - 27761
1
2
3
4
5
6
7
8
9
10
var F = function(){};
 
F.prototype.a = function(){};
Object.prototype.b = function(){};
Function.prototype.c = function(){};
 
var f = new F();
f.name = '111';
 
console.log(f)

 打印f结果:实例化自构造函数F的对象,f有一个私有的name属性

 

  展开对象

对象 f 下有 name 属性和 _proto_ 属性,所有对象在创建时都有一个不公开的 _proto_ 内置属性,这个属性的值就是f的构造原型对象,在这里对象 f 实例自构造函数F,函数对象F的原型为 F.prototype,即 f._proto_ = F.prototype

1
2
3
4
5
6
7
8
9
10
11
12
var F = function(){};
         
F.prototype.a = function(){};
Object.prototype.b = function(){};
Function.prototype.c = function(){};
         
var f = new F();
f.name = '111';
         
console.log(f)
         
console.log(F.prototype)

  

 

 在JavaScript语言中,constructor 属性是专门为 function 而设计的,它存在于每一个构造函数的原型对象的属性中(F.prototype.constructor );这个 constructor 保存了指向构造函数的一个引用。

 在此例中,F.prototype.constructor 指向函数 F;每一个实例都继承原型上的属性和方法,即 F.prototype.constructor = f.constructor = F

 *区分prototype和_proto_

prototype是挂载在构造函数上的原型对象

_proto_是所有对象在创建时都有的内置属性,这个属性的值是构造该对象的函数上挂载的原型

如上例 f._proto_ = F.prototype

 

posted on   前端小透明  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示