随笔分类 - javascript
摘要:实现效果: HTML代码: <body> <button onclick="showDialog()">点击展示dialog</button> <dialog class="dialog"> <div class="dialog-header"> 这是标题 <div class="close-btn
阅读全文
摘要:说明: debounce和throttle在脚手架的使用,此处以防抖函数debounce为例避免按钮被重复点击 引入: import lodash from 'lodash' 使用: 直接使用debounce方法 // 审核 audit: lodash.debounce(function() { t
阅读全文
摘要:1. 分析代码 #include <stdio.h> void fun(int n) { printf("1th - Level: %d Address: %d\n", n, &n); if(n < 3) fun(n+1); printf("2th - Level: %d Address: %d\n
阅读全文
摘要:一、浅拷贝 浅拷贝只会将被复制对象的第一层属性进行复制,若第一层属性为原始类型的值,则直接复制其值,一般称之为“传值”;若第一层属性为引用类型的值,则复制的是其存储的指向堆内存对象的地址指针,一般称之为“传址”。因此浅拷贝的结果存在当改变一个对象的值时引起另一个对象值变化的问题。即新对象和旧对象之间
阅读全文
摘要:前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 ES5继承 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: function Animal (name) { // 属性 this.name = name ||
阅读全文
摘要:本文主要内容 什么是对象 创建对象的几种方式 使用构造函数创建 字面量创建 工厂模式 构造模式 原型模式 原型 组合使用构造函数模式和原型模式 什么是对象 直接上《JavaScript高级教程》的截图 创建对象 1.使用构造函数创建 var obj = new Object(); 2.字面量创建 v
阅读全文
摘要:原型 我(个人)不喜欢的,就是讲原型时上来就拿类做比较的,所以我不会这样讲。不过我的确讲过构造器函数,在这方面和类多多少少有共通之处。我的建议是:忘掉类。有很多观点认为“类”学的泛滥是面向对象的过度发展,是一种悲哀,以至于有太多的开发者几乎把面向对象和类划上了等号。在学习原型之前,我请你先记住并品味
阅读全文
摘要:在JavaScript里面,字面量包括:字符串字面量(string literal )、数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(function literal)。 1. 字符串字面量(String Literal)是指双引号引住的一
阅读全文
摘要:有时候一个一个元素要绑定多个事件,其实是分开写 先看这个例子,我们预期它先执行alert1,然后是alert2,但事实上是没有alert1,因为覆盖了 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>绑定多个
阅读全文
摘要:前言 数组是 JS 中使用频率仅次于对象的数据结构,官方提供了众多的 API,今天我们来谈谈如何扁平化(flatten)数组。 顾名思义,扁平化就是将嵌套的数组变成一维数组的过程。 通常有几种方法可以实现扁平化: 迭代递归法 曲线救国法 我们将以一个例子贯穿整篇文章: var array = [[1
阅读全文
摘要:console.log 不服预期 有些时候在使用·console.log() 打印对象的时候,打印出来的值不符合预期。这是为什么呢? 有一种说法是:console.log() 是一个异步的方法,浏览器在处理的时候对于这种读取 i/o 的操作一般会放到比较靠后的位置去处理。所以有些时候打印出来的值不符
阅读全文
摘要:数组扁平化 所谓数组扁平化就是将数组中并不规则的多维数组去除维度,使之变为一维数组。 let newArray = arr.flat(depth) flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 其中,depth指定要提取嵌套数组的结
阅读全文
摘要:1 什么是尾调用? 尾调用( Tail Call )是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。 function f(x){ return g(x); } 上面代码中,函数 f 的最后一步是调用函数 g ,这就叫尾调用。 以下三种情况,都不
阅读全文
摘要:转自:https://juejin.cn/post/6844903613584654344 typeof 实现原理 typeof 一般被用于判断一个变量的类型,我们可以利用 typeof 来判断number, string, object, boolean, function, undefined,
阅读全文
摘要:基本概念 事件代理(Event Delegation),又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown......)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡
阅读全文
摘要:一、简介 1、postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递 2、postMessage(data,origin)方法接受两个参数: (1)data:要传递的数据,html5规范中提到该参数可以是JavaScript的任意基本类型
阅读全文
摘要:webSoket用来实现双向通信,客户端和服务端实时通信。 webSoket优点和缺点: 优点:对于前端来说,使用简单,功能灵活,如果部署了webSocket服务器,可以实现实时通信。 缺点:需要服务端技术的支持,如果websocket数据量比较大的话,会严重消耗服务器的资源。 例子: 1 webs
阅读全文
摘要:函数防抖和节流,都是控制事件触发频率的方法。应用场景有很多,输入框持续输入,将输入内容远程校验、多次触发点击事件、onScroll等等。例子:鼠标滑过一个div,触发onmousemove事件,它内部的文字会显示当前鼠标的坐标。 <style> #box { width: 1000px; heigh
阅读全文
摘要:一、相同点: 函数用于将一个或多个对象的内容合并到目标对象。 都可以用于浅拷贝 $.extend(target ,defaults, options) 与Object.assign(target ,defaults, options) 浅拷贝: 1、$.extend(target ,defaults
阅读全文
摘要:用途 {}包围对象object包围代码块code block(如方法体,或普通代码块等)。 () 包围参数列表 自调用表达式,包围一些需要通过运算得出结果的代码(其中包围的代码会执行一次)。函数表达式可以自调用(即自动运行一次)。如果表达式后面紧跟(),会自动调用。不能自调用声明的函数,通过添加括号
阅读全文

浙公网安备 33010602011771号