豁然高

导航

< 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

统计

javascript原型链和作用域链的总结

原型链和作用域链的用途

原型链是用于查找属性的

作用域链是用于查找变量的

 

在函数内部使用一个变量时,如果这个变量在本作用域内找不到,就会到上一级的作用域中查找,

函数当前作用域的上级作用域为该函数被创建(或者说被定义)时所在的作用域,而不是函数被调用时所在的作用域

 

当调用一个对象的属性时,如果这个属性不是对象本身的属性,那就会依次沿着原型链向上查找,直到找到为止,若找到最上层也找不到,则返回undefined

 

对象所继承原型对象就是创建这个对象的函数的原型

例如自定义了函数test,那么在定义test函数时,就会默认使用Objec生成一个对象赋值给test函数的prototype属性,来作为test函数的原型

那么当使用new test()创建对象时,创建的对象就会继承test函数的原型,也就是test.prototype。因为是默认生成的空对象,并没有什么属性和方法被继承。

我们可以自定义test.prototype来实现想要继承的属性和方法

如test.prototype={a:1,  b:2, m:function(){} }

 

一些内置对象如Array, Date,Number等其实就是函数,内部分别为这些函数定义的原型对象,具有某些属性和方法。

因此生成的数组对象和日期对象都会继承这些函数的原型对象而具有特定的属性和方法

 

posted on   豁然高  阅读(401)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示