gpt4 book ai didi

javascript - 捕获原生原型(prototype)的内容

转载 作者:行者123 更新时间:2023-11-29 20:16:54 24 4
gpt4 key购买 nike

尝试并执行以下操作:

for (var key in String.prototype)
console.log(key);

它给你...什么都没有(好吧,除非你自己定义了一些外国的东西。)但是,你仍然有 String.prototype.split 例如。我在所有其他 native 对象(NumberArrayObject)上都尝试了相同的结果。

以下也“不起作用”:

for (var key in Array)
console.log(key);

例如Array.isArray

Object.keys(Array.prototype) 给出一个空数组,Object.keys(Array) 也是如此。但是,Object.keys(jQuery) 示例提供了一个巨大的数组,正如预期的那样。

那么,为什么我们不能遍历浏览器提供的本地资源,同时仍然访问它们呢?

最佳答案

来自MDC page for for..in :

A for...in loop does not iterate over built-in properties

原因是Javascript中的属性要么是可枚举的,要么是不可枚举的; “可枚举”意味着您可以在 for..in 循环中访问该属性。所有内置属性都是不可枚举的。

现代浏览器支持 Object.getOwnPropertyNames 方法:

console.log(Object.getOwnPropertyNames(Array.prototype));
// ["length", "constructor", "concat", "map", "sort", "join", "indexOf", "filter", "some", "toString", "reduceRight", "splice", "forEach", "shift", "unshift", "toLocaleString", "lastIndexOf", "reverse", "reduce", "pop", "push", "every", "slice"]

关于javascript - 捕获原生原型(prototype)的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com