10-29:如何理解原型链

博客介绍了JavaScript原型与原型链相关知识。每个对象内部有prototype属性,访问对象属性时,若对象内部无该属性,会去prototype里找,其又有自己的prototype,形成原型链。JavaScript对象通过引用传递,修改原型相关对象会继承改变。

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

JavaScript原型:每个对象都会在其内部初始化一个属性,就是prototype(原型)。

原型链:

当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。
 

原型链特点:

JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。

当调取一个对象的属性时,会先在本身查找,若无,就根据 proto 找到构造原型,若无,继续往上找。最后会到达顶层Object prototype,它的 proto 指向null,均无结果则返回undefined,结束。由 proto 串起的路径就是『原型链』。

Build target 'DAC' compiling main.c... main.c(10): warning: #223-D: function "GenerateSineWave" declared implicitly GenerateSineWave(); main.c(11): warning: #223-D: function "GenerateTriangleWave" declared implicitly GenerateTriangleWave(); main.c(12): error: #165: too few arguments in function call DAC_Init(); main.c(13): error: #165: too few arguments in function call ADC_Init(); main.c(21): warning: #1-D: last line of file ends without a newline } main.c: 3 warnings, 2 errors compiling dac.c... ..\HARDWARE\DAC\dac.c(3): error: #147-D: declaration is incompatible with "void DAC_Init(uint32_t, DAC_InitTypeDef *)" (declared at line 279 of "..\STM32F10x_FWLib\inc\stm32f10x_dac.h") void DAC_Init() { ..\HARDWARE\DAC\dac.c(19): warning: #140-D: too many arguments in function call DAC_Init(DAC_Channel_1, &DAC_InitStruct); ..\HARDWARE\DAC\dac.c(27): error: #20: identifier "sineWave" is undefined DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)sineWave; ..\HARDWARE\DAC\dac.c(29): error: #20: identifier "WAVE_LEN" is undefined DMA_InitStruct.DMA_BufferSize = WAVE_LEN; ..\HARDWARE\DAC\dac.c: 1 warning, 3 errors compiling adc.c... ..\HARDWARE\ADC\adc.c(5): error: #147-D: declaration is incompatible with "void ADC_Init(ADC_TypeDef *, ADC_InitTypeDef *)" (declared at line 429 of "..\STM32F10x_FWLib\inc\stm32f10x_adc.h") void ADC_Init() { ..\HARDWARE\ADC\adc.c(23): warning: #140-D: too many arguments in function call ADC_Init(ADC1, &ADC_InitStruct); ..\HARDWARE\ADC\adc.c: 1 warning, 1 error compiling ext.c... ..\HARDWARE\EXT\ext.c(19): warning: #223-D: function "sin" declared implicitly sineWave[i] = (uint16_t)(2047.5f * sin(2 * PI * i / WAVE_LEN) + 2047.5f); ..\HARDWARE\EXT\ext.c(54): warning: #223-D: function "LCD_ClearLine" declared implicitly LCD_ClearLine(30); ..\HARDWARE\EXT\ext.c(55): error: #167: argument of type "char *" is incompatible with parameter of type "u16" LCD_ShowString(30, 30, currentWave == 0 ? "Square" : ..\H
最新发布
03-18
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值