介绍了 JavaScript 中 bind() 函数的原理及其实现,bind() 会创建一个绑定函数,固定 this 值和部分参数。绑定函数通过内部属性 [[BoundTargetFunction]] 和 [[Call]] 实现调用逻辑,并支持 new 运算符构造。示例提供了 bind() 方法的手动实现。
描述了在 VSCode 中加载多个项目时 `.eslintignore` 文件未生效的问题,并通过配置 `eslint.workingDirectories` 解决。推荐使用模式 4,通过正则匹配指定工作目录,适用于 monorepo 项目结构,有效解决了文件忽略问题。
本文介绍利用动态规划可计算字符串的相似度,通过 LCS Substring 判断最长公共子串,通过 LCS Subsequence 获得更完整的共同序列,用于提升模糊匹配效果。适用于输入纠错、相似词推荐及搜索提示等场景,在不同数据间衡量包含与相似关系更为准确。
模拟环境
// 如何判断原型链上重复的属性
// 模拟一个原型链 Baz => Bar => Foo => FooProto => Object => null
const FooProto = {
ak: 1
}
const Foo = Object.create(FooProto)
Foo.ak = 2
Foo.aj = 4
const Bar = Object.create(Foo)
Bar.ak = 3
Bar.aj = 5
Bar.am = 7
const Baz = Object.create(Bar)
"如何判断原型链上重复的属性?"继续阅读
介绍了 var、let 和 const 在 JavaScript 中的作用域和行为差异。var 声明的变量会提升并挂载到 window 对象上,而 let 和 const 声明的变量存在暂时性死区 (TDZ),在声明代码执行前无法访问,否则会抛出引用错误。
介绍了通过组合设备参数生成用户唯一标识的方法,并使用 fingerprintjs2 库实现匿名指纹获取。代码示例展示了如何利用 requestIdleCallback 在浏览器空闲时生成指纹,同时提供了相关参考和安装指南。
介绍了 X-Real-IP 和 X-Forwarded-For 的用途及区别,X-Forwarded-For 更标准化,用于记录客户端及代理 IP 地址链。通过 Nginx 配置或 Koa 获取客户端真实 IP 的方法示例也被详细说明,推荐优先使用 X-Forwarded-For。
讲解了在开发 NPM 包时如何通过 rollup-plugin-replace 和 webpack.DefinePlugin 处理环境变量,分别展示了两种工具的配置方法和代码示例,帮助实现开发与打包环境的兼容性。
介绍了浏览器中 unhandledrejection 和 rejectionhandled 事件的作用与使用方法,通过监听未处理和已处理的 Promise 拒绝状态,展示了如何跟踪并处理程序中的拒绝状态,提供了代码示例及相关笔记参考。
讲解了如何使用生成器为对象定义迭代器,并展示了访问默认迭代器和迭代器与扩展运算符的结合,通过示例说明了迭代器在对象、数组和字符串中的应用,强调了生成器函数返回迭代器的特性。