<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[simahe的专栏]]></title><description><![CDATA[记录那些踩过的坑，搭一座桥，为自己也为他人。]]></description><link>https://blog.youkuaiyun.com/simahe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; simahe]]></copyright><item><title><![CDATA[Drag and Drop API 实现 JavaScript 中的原生拖放功能]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/144544661</link><guid>https://blog.youkuaiyun.com/simahe/article/details/144544661</guid><author>simahe</author><pubDate>Tue, 17 Dec 2024 21:11:45 +0800</pubDate><description><![CDATA[拖放就是将“拖放元素“ 拖到 ”放置目标”上面。没有数据传输的拖动是没有意义的。拖的时候有 3 个事件，在`dragstart`事件中定义数据，放的时候有 4 个事件，在`drop`事件中接受数据。]]></description><category></category></item><item><title><![CDATA[vue3 面试题带答案，万字总结]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/144199147</link><guid>https://blog.youkuaiyun.com/simahe/article/details/144199147</guid><author>simahe</author><pubDate>Mon, 02 Dec 2024 21:35:11 +0800</pubDate><description><![CDATA[vue3 面试题，vue3面试题带答案，vue3技术总结，Vue3 新增功能有哪些]]></description><category></category></item><item><title><![CDATA[JavaScript 浏览器对象模型 BOM]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143868921</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143868921</guid><author>simahe</author><pubDate>Mon, 18 Nov 2024 22:50:22 +0800</pubDate><description><![CDATA[BOM 提供了与浏览器交互的基础设施，允许开发者获取当前窗口、文档、历史、导航和屏幕的信息及功能。这些功能使得我们能够创建丰富的用户体验和交互。]]></description><category></category></item><item><title><![CDATA[JavaScript 判断错误、查找错误、处理错误]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143854706</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143854706</guid><author>simahe</author><pubDate>Mon, 18 Nov 2024 13:34:51 +0800</pubDate><description><![CDATA[在 JavaScript 开发与运行时，难免会遇到一些错误。首先，我们要知道报什么错误，也就是错误类型；其次，我们需要查找错误，找到引起错误的代码块；最后，一些关键代码要预防错误，以及处理错误。]]></description><category></category></item><item><title><![CDATA[vue2 面试题带答案，万字总结]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143781967</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143781967</guid><author>simahe</author><pubDate>Thu, 14 Nov 2024 22:05:12 +0800</pubDate><description><![CDATA[vue2 面试题带答案，万字总结]]></description><category></category></item><item><title><![CDATA[2024 css 面试题带答案，万字总结]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143717024</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143717024</guid><author>simahe</author><pubDate>Tue, 12 Nov 2024 16:07:08 +0800</pubDate><description><![CDATA[2024 css 面试题带答案，万字总结。]]></description><category></category></item><item><title><![CDATA[JavaScript 跳出循环]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143658675</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143658675</guid><author>simahe</author><pubDate>Sun, 10 Nov 2024 12:07:55 +0800</pubDate><description><![CDATA[优先使用数组已有的方式跳出循环，在考虑使用 break、continue跳出循环；return跳出函数也是一种选择；特殊情况下考虑使用try-catch-throw，outerLoop结合break慎用。]]></description><category></category></item><item><title><![CDATA[JS 创建对象]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143644978</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143644978</guid><author>simahe</author><pubDate>Sat, 09 Nov 2024 14:46:31 +0800</pubDate><description><![CDATA[对于简单对象，字面量方式或工厂函数十分便捷；对于需要创建多个实例，构造函数或Class是更好的选择；而对于需要继承与特定原型的场景，`Object.create()` 提供了灵活性。]]></description><category></category></item><item><title><![CDATA[this 指向]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143632175</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143632175</guid><author>simahe</author><pubDate>Fri, 08 Nov 2024 17:58:10 +0800</pubDate><description><![CDATA[this 不是编写时绑定，而是运行时绑定。它依赖于函数调用的上下文条件。每个执行上下文都有一个 this 。在全局上下文中，this 指向全局对象；在函数上下文中，this 的指向取决于函数的直接调用位置。]]></description><category></category></item><item><title><![CDATA[JS 闭包]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143624228</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143624228</guid><author>simahe</author><pubDate>Fri, 08 Nov 2024 13:27:46 +0800</pubDate><description><![CDATA[当函数可以记住并访问所在的词法作用域时，就产生了闭包，即使函数是在当前词法作用域之外执行。闭包会保持对外部作用域的引用，从而可能阻止这些作用域的内存被垃圾回收器回收，使用之后记得手动回收。]]></description><category></category></item><item><title><![CDATA[JS 异步编程]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143579798</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143579798</guid><author>simahe</author><pubDate>Wed, 06 Nov 2024 21:01:11 +0800</pubDate><description><![CDATA[JS异步是指一种非阻塞的执行方式。一个任务可以启动另外一个任务而不需要等待其完成，允许程序继续执行其他操作。]]></description><category></category></item><item><title><![CDATA[JS 内存管理 - V8 引擎]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143490702</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143490702</guid><author>simahe</author><pubDate>Mon, 04 Nov 2024 18:16:06 +0800</pubDate><description><![CDATA[JavaScript 通过自动内存管理实现内存分配和闲置资源回收。基本思路很简单，确定哪个环境变量不再使用，然后释放它占用的内存。这个过程是周期性的，垃圾回收程序每隔一定时间（或者说在代码执行过程中某个预定的收集时间）就会自动运行。]]></description><category></category></item><item><title><![CDATA[JS执行上下文 - V8 引擎]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143472736</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143472736</guid><author>simahe</author><pubDate>Sun, 03 Nov 2024 22:58:21 +0800</pubDate><description><![CDATA[执行上下文是在 JavaScript 引擎解析 (Parsing)阶段，确切说是词法分析(Lexical Analysis)阶段，创造的一个特殊的环境。用来处理 JavaScript 代码中的变量和函数如何被解析和执行。这个特殊的环境被称为执行上下文。]]></description><category></category></item><item><title><![CDATA[var、let、const 学习研究]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143445402</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143445402</guid><author>simahe</author><pubDate>Sat, 02 Nov 2024 09:11:52 +0800</pubDate><description><![CDATA[var、let和 const是 JavaScript 中用来声明变量的关键字。学习一下它们在作用域、初始化、重复声明的区别，也学习一下什么是暂时性死区、变量提升。]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 单例模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379425</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379425</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:52:35 +0800</pubDate><description><![CDATA[单例设计模式（Singleton Pattern）是一种创建型设计模式，它确保一个类只有一个实例，并提供一个全局访问点。单例模式通常用于管理共享资源，如日志记录、配置信息或数据库连接]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379421</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379421</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:49:39 +0800</pubDate><description><![CDATA[抽象工厂设计模式（Abstract Factory Pattern）是一种创建型设计模式，它提供一个接口用来创建一系列相关或相互依赖的对象，而无需指定它们具体的类。抽象工厂模式允许客户端代码与具体类解耦，从而实现更高的灵活性和可扩展性。]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 工厂模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379417</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379417</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:49:07 +0800</pubDate><description><![CDATA[工厂设计模式（Factory Pattern）是一种常见的创建型设计模式，它提供了一种创建对象的接口，使得子类可以决定实例化哪一个类。]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 建造者模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379414</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379414</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:48:00 +0800</pubDate><description><![CDATA[建造者模式（Builder Pattern）是一种创建型设计模式，它主要用于构建一个复杂对象。该模式将一个复杂对象的构建过程与其表示分离，使得同样的构建过程可以创建不同的表示。这种方式使得构建复杂对象的过程变得更加灵活和可配置，因为你可以根据需要添加、删除或重新排列构建步骤。同时，它也使得代码更加清晰和易于维护，因为每个构建步骤都封装在。假设我们要构建一个表示“用户信息”（UserInfo）的复杂对象，这个对象包含多个部分，如姓名、地址、联系方式等。类包含了构建这个对象所需的所有步骤，并且每个步骤都返回。]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 原型模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379412</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379412</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:47:17 +0800</pubDate><description><![CDATA[原型设计模式（Prototype Pattern）是一种创建型设计模式，它通过复制已有的对象来创建新对象，而不是通过类的实例化。利用原型来实现对象的克隆，可以避免大量的构造过程，并且在一些情况下，创建新对象的时间和资源消耗大大减少。关键字，而是直接操作对象的原型来创建新的对象类型。类那样直观和强大，特别是当我们需要多重继承或更复杂的继承结构时。ES6 引入了类（class）语法，这是对原型模式的一种语法糖。上定义的属性和方法。然而，这种方式的继承不如使用。在纯原型模式中，我们不使用。]]></description><category></category></item><item><title><![CDATA[es6 语法学习 - 代理模式]]></title><link>https://blog.youkuaiyun.com/simahe/article/details/143379407</link><guid>https://blog.youkuaiyun.com/simahe/article/details/143379407</guid><author>simahe</author><pubDate>Thu, 31 Oct 2024 07:44:38 +0800</pubDate><description><![CDATA[代理设计模式（Proxy Pattern）是一种结构型设计模式，它为其他对象提供一种代理以控制对这个对象的访问。代理对象在一定程度上可以替代真实对象，客户端通过代理与真实对象交互，代理可以在这个过程之中增加附加的功能。以下是一个使用 JavaScript ES6 实现代理设计模式的示例，展示如何通过代理控制对真实数据库的访问。]]></description><category></category></item></channel></rss>