Built-in Prototypes

本文探讨了在JavaScript中修改内置对象原型的方法及其潜在风险。通过实例展示了如何为Array.prototype添加forEach方法,并警告了过度扩展原型可能带来的问题。

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

[b]We can also modify built-in object prototypes.[/b]
 if (!Array.prototype.forEach) { 
Array.prototype.forEach = function(fn){
for ( var i = 0; i < this.length; i++ ) {
fn( this[i], i, this );
}
};
}

["a", "b", "c"].forEach(function(value, index, array){
assert( value, "Is in position " + index + " out of " + (array.length - 1) );
});

[b]Beware: Extending prototypes can be dangerous.[/b]
[code="java"] Object.prototype.keys = function(){
var keys = [];
for ( var i in this )
keys.push( i );
return keys;
};

var obj = { a: 1, b: 2, c: 3 };

assert( obj.keys().length == 3, "We should only have 3 properties." );

delete Object.prototype.keys;[/c
board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:138:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 1); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:2: error: expected identifier or ‘(’ before ‘for’ for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘>=’ token for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘--’ token for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:147:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 0); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:148:9: error: expected declaration specifiers or ‘...’ before numeric constant udelay(500); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:152:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 1); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:153:1: error: expected identifier or ‘(’ before ‘}’ token }; ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c: In function ‘iox74lv_set’: board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:160:25: error: ‘IOX_SHCP’ undeclared (first use in this function) gpio_direction_output(IOX_SHCP, 0); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:160:25: note: each undeclared identifier is reported only once for each function it appears in board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:163:26: error: ‘IOX_SDI’ undeclared (first use in this function) gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:171:24: error: ‘IOX_STCP’ undeclared (first use in this function) gpio_direction_output(IOX_STCP, 0); ^ arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.fsl_esdhc.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(fsl_esdhc)" -D"KBUILD_MODNAME=KBUILD_STR(fsl_esdhc)" -c -o drivers/mmc/fsl_esdhc.o drivers/mmc/fsl_esdhc.c arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.mmc_write.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mmc_write)" -D"KBUILD_MODNAME=KBUILD_STR(mmc_write)" -c -o drivers/mmc/mmc_write.o drivers/mmc/mmc_write.c scripts/Makefile.build:280: recipe for target &#39;board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.o&#39; failed make[1]: *** [board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.o] Error 1 make -f ./scripts/Makefile.build obj=drivers/mtd/spi arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.mmc.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mmc)" -D"KBUILD_MODNAME=KBUILD_STR(mmc)" -c -o drivers/mmc/mmc.o drivers/mmc/mmc.c rm -f drivers/mtd/onenand/built-in.o; arm-linux-gnueabihf-ar rcs drivers/mtd/onenand/built-in.o Makefile:1196: recipe for target &#39;board/freescale/mx6ull_alientek_emmc&#39; failed make: *** [board/freescale/mx6ull_alientek_emmc] Error 2 make: *** 正在等待未完成的任务....
最新发布
08-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值