今天在群里看到两个keys函数实现
abcd的实现:
var obj = {
a:1,
b:2,
c:3
}
function
keys(obj){
var a = [], i = 0;
for (a[i++] in obj);
return a ;
}
console.log(keys(obj))
|
灰大的实现:
var obj = {
a:1,
b:2,
c:3
}
function
keys(obj){
var a = [];
for (a[a.length] in obj);
return a ;
}
console.log(keys(obj))
|
好疯狂吧,用到for ( LeftHandSideExpression in Expression ) Statement
。我也不清楚,自己查ECMA。但我知道这实现是有问题的,Object.keys
只收集自身属性名,不收集继承自原型链上的。加之,IE6下对Object的一系列属性是不可遍历的,这时我们还要修正一下。下面才是正确的实现:
var DONT_ENUM = "propertyIsEnumerable,isPrototypeOf,hasOwnProperty,toLocaleString,toString,valueOf,constructor" .split( "," ),
hasOwn = ({}).hasOwnProperty;
for ( var i in {
toString: 1
}){
DONT_ENUM = false ;
}
Object.keys = Object.keys || function (obj){
var result = [];
for ( var key in obj ) if (hasOwn.call(obj,key)){
result.push(key)
}
if (DONT_ENUM && obj){
for ( var i = 0 ;key =
DONT_ENUM[i++]; ){
if (hasOwn.call(obj,key)){
result.push(key);
}
}
}
return
result;
};
|
分享到:
相关推荐
Python 语言奇技淫巧总结 Python 语言作为一种高效、灵活的编程语言,具有许多奇技淫巧,可以帮助开发者提高编程效率和代码质量。在本文中,我们将探讨 Python 语言中的四大奇技淫巧:循环代码优化、异常处理,以及...
《算法心得-高效算法的奥秘(原书第2版)》是一本深入探讨算法精髓的书籍,...书中的"位运算的奇技淫巧"部分,无疑是将这种技术运用到极致的探索,对于有志于提升算法水平的开发者来说,是一份不可多得的参考资料。
标题中提到的“来自小密圈里的那些奇技淫巧”可能是指在特定的技术圈子中分享的一些特殊技巧,用于突破安全限制和进行有效的攻击测试。以下将详细解释文档中提及的各个技巧: 1. EVAL长度限制突破技巧: 在PHP中,`...
vue有哪些奇技淫巧
一些有意思的奇技淫巧可能涵盖: 1. 不常见的CSS属性或用法,提供独特的设计解决方案。 2. CSS hack,用于解决特定浏览器的兼容性问题。 3. 利用CSS实现有趣的视觉效果,如纯CSS图形、3D效果等。 4. 利用CSS进行页面...
检测这种攻击的方法之一是观察DNS服务器的异常查询行为,如: - `dig . NS @你要日的dns` 防御DNS放大攻击的关键在于限制未经授权的区域传输和加强DNS服务器的安全配置。 4. **DNS注入、命令执行与隧道** 在某些...
Git是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个 功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。...
- 使用`Object.keys`, `Object.values`和`Object.entries`处理对象。 - 使用`map`, `filter`, `reduce`等数组方法进行高效的数据处理。 - 掌握闭包和模块化,以更好地管理作用域和复用代码。 - 熟悉Promise和async/...
RocketMQ 奇技淫巧之 ServiceLoader 源码解读 抓下来打包成了HTML文件, 方便离线观看
JavaScript是世界上最流行的编程语言之一,尤其在Web开发领域中占据着核心地位。它不仅可以用于创建交互式的网页,还可以用于移动应用开发、服务器端编程(如Node.js)等。这篇文章总结了45个实用的JavaScript技巧、...
Python,作为一门广受欢迎的编程语言,在...总之,Python的这些“奇技淫巧”展示了这门语言在实际编程中灵活多变的应用能力,对于学习和使用Python的开发者而言,了解这些技巧能够极大地提高开发效率和程序的用户体验。
2. **Page Object模式**:这是一种设计模式,用于封装UI元素和与之相关的操作,提高了代码的可维护性和可读性。通过创建代表页面或屏幕的类,我们可以将交互逻辑和定位器集中管理。 3. **Mock服务**:在自动化测试...
在这个“Go-Git的奇技淫巧”中,我们将探讨一些高级和实用的Git技巧,以及如何使用Go来进一步操作Git。 1. **分支管理**:Git的分支机制允许开发者在同一项目上并行工作。`git branch`命令用于创建、查看和切换分支...
包括一些常见的面试题,及一些奇技淫巧. csy.array:数组相关 csy.backtracking:回溯法 八皇后 全排列 组合 csy.bbst: 红黑树 csy.binarytree:二叉树,包括插入 删除 前中后序遍历 搜索,中序遍历下的前驱后继等 csy....
jj-learning 工作学习中的积累,作为沉淀也是财富。有错误的地方或者建议可以 联系我~ ...奇技淫巧 tslint.json 配置说明 encodeURIComponent 与 Java 的区别 数据结构和算法 目录 npm 实用语句 库 j
标题“CSS中边框使用负边距值的奇技淫巧”暗示了负边距在CSS中的独特应用,这些应用可能并不常见,但能够解决特定的布局挑战。描述提到,通过负边距可以进行布局调整和实现元素重叠,这些都是设计师和开发者可以利用...