An open source workbench for AI-assisted security research: scope, approvals, tools, and evidence in one project.
Browse 350+ upscaled emoji and stickers, pick favorites, and export them to Slack in one paste.
White-label document ingestion: upload PDFs, Office files, and media, then search with cited answers via REST, SDK, or chat.
我的项目、实验和仓库精选。
记录我的开源贡献、项目和实验。
A code + schema generator for JSON or CSV input.
A functional and fluent API built around native JavaScript promises.
High performance image resizing and streaming proxy for Node.js.
A powerful key-value service with several database adapters.
A modern app starter using TS, Vite, React, Tailwind CSS, and more.
CTO & Co-founder, 17th Street Labs
程序员 | 领导者思考者 | 折腾者
<form>
ES2015 那些冷门特性,你了解多少?
证明你的 JavaScript 实力! 🚀 无需登录或注册。 ✨ 多选题。 🤖 ……能有多难,对吧?
你应该如何访问一个使用了 getter 方法的 JavaScript 对象属性?
const obj = { get val() { return 'got it!'; }};console.log(obj.val);
在 JavaScript 中,getter 可以像普通属性一样被访问。不需要像函数那样调用它。 在这个例子中,直接访问 obj.val 就会触发 getter 方法并输出 got it!。
obj.val
got it!
为 JavaScript 对象创建一个真正唯一的属性键,正确的方法是什么?
const uniqueKey = Symbol('myUniqueKey');const obj = { [uniqueKey]: 'unique value'};console.log(obj[uniqueKey]);
Symbol 是一种唯一且不可变的原始类型,可用作对象属性的键。这有助于避免命名冲突,特别是在大型代码库或编写可重用库时。
在 for...in 循环迭代期间,age 属性会被列出来吗?
for...in
age
const person = {};Object.defineProperty(person, 'age', { value: 25, enumerable: true});for (let key in person) { console.log(key);}
Object.defineProperty() 中的 enumerable 属性控制该属性是否会出现在 for...in 等枚举方法中。在这个例子中,由于 enumerable: true,age 属性在迭代期间会被列出。
Object.defineProperty()
enumerable
enumerable: true
在使用 Object.defineProperty() 且未明确指定 enumerable 时,该属性的默认可枚举性是什么?
const car = {};Object.defineProperty(car, 'make', { value: 'Toyota'});console.log(Object.keys(car));
当你使用 Object.defineProperty() 而不指定 enumerable 时,其默认值为 false。这意味着 make 属性不会出现在 Object.keys() 或其他枚举方法中。
false
make
Object.keys()
以下比较的结果是什么?
const sym1 = Symbol('id');const sym2 = Symbol('id');console.log(sym1 === sym2);
每次调用 Symbol() 都会创建一个唯一且不可变的值,即使描述内容相同也是如此。在这个例子中,sym1 和 sym2 是两个不同的 symbol,因此比较结果返回 false。
Symbol()
sym1
sym2
在 for...in 迭代期间,以 Symbol 作为键的属性会被列出吗?
const sym = Symbol('uniqueKey');const obj = { [sym]: 'symbol value', regularKey: 'regular value'};for (let key in obj) { console.log(key);}
虽然 Symbol 键属性可以拥有自己的 enumerable 标志,但 for...in 和 Object.keys() 只会访问字符串键的可枚举属性。在这个例子中,只有 regularKey 会被列出,而 Symbol 键属性则不会。
regularKey
哪种方法可以用来获取一个对象的所有 Symbol 键名?
Object.getOwnPropertySymbols() 方法专门用于获取对象自身的所有 Symbol 属性键。
Object.getOwnPropertySymbols()
const sym1 = Symbol('id');const sym2 = Symbol('name');const obj = { [sym1]: 'symbol value', [sym2]: 'another symbol value'};console.log(Object.getOwnPropertySymbols(obj));// [Symbol(id), Symbol(name)]