JavaScript
文章平均质量分 60
js
海胆Sur
本着开放共享的态度
展开
-
js new 原理
new 调用函数时,该函数将被用作构造函数类只能用 new 运算符实例化不使用 new 调用一个类将抛出 TypeError。原创 2023-12-09 14:26:16 · 849 阅读 · 0 评论 -
js 浮点小数精度问题
计算机不可能存储无限长二进制数,因此必然发生截取。查看存储精度。原创 2023-11-05 17:11:43 · 167 阅读 · 0 评论 -
js Object 对象 属性和方法
Object.preventExtensions,Object.seal 或 Object.freeze 方法都可以标记一个对象为不可扩展。运算符)将数字 -0 和 +0 视为相等,而将 Number.NaN 与 NaN 视为不相等。运算符在判断相等前对两边的变量(如果它们不是同一类型)进行强制转换(这种行为将。判断为 true),而 Object.is 不会强制转换两边的值。不可新增属性,不可修改配置,不可修改值(配置可写的情况下)不可新增属性,不可修改配置。第二个参数可额外配置属性。原创 2022-10-13 21:41:24 · 3065 阅读 · 0 评论 -
js DOM
onblur onclick onerror onfocusonkeydown onkeypress onkeyup onmouseoveronload onmouseup onmousedown onsubmit原创 2021-05-30 16:43:24 · 105 阅读 · 2 评论 -
js DOM 事件 事件监听
事件属性此事件发生在何时…onchange域的内容被改变onresize窗口或框架被重新调整大小属性此事件发生在何时…onfocus元素获得焦点onblur元素失去焦点onselect文本被选中属性此事件发生在何时…onkeydown某个键盘按键被按下onkeypress某个键盘按键被按下并松开onkeyup某个键盘按键被松开onmousedown鼠标按钮被按下onmouse原创 2021-06-11 22:13:35 · 793 阅读 · 0 评论 -
Event 事件对象 冒泡与捕获机制
但有时候并不希望事件冒泡(事件影响到上级) 可使用 stopPropagation() / stopImmediatePropagation()嵌套的元素事件处理函数可能会依次被触发,触发的顺序取决于 事件冒泡 和 事件捕获 在每一个元素上的设置情况。event.stopImmediatePropagation 阻止相同事件的其他事件监听器的执行。在现代浏览器中,默认情况下,所有事件处理程序都在冒泡阶段进行注册。嵌套元素 同时触发相同事件 ,事件执行的逻辑。事件监听器 = 事件处理器。原创 2021-06-13 15:03:38 · 181 阅读 · 1 评论 -
js 强制类型转换 toString() parseInt() parseFloat()
方法作用toString()转换成字符串。parseInt()将 字符串 等转换成整数。parseFloat()将 字符串等 转换成浮点数不同类型 toString() 的结果类型返回对象‘[object Xxxx]’ 构造名 非变量无法直接使用 toString字符串返回本身数字对应字符串数字 非变量无法直接使用 toString 123.toString() X布尔‘true’ / ‘false’数组...原创 2022-01-05 10:37:40 · 723 阅读 · 0 评论 -
js 绝对等于 的各种情况 需要进行绝对等于比较的方法
.includes() 或 .indexOf()原创 2022-01-04 11:20:37 · 399 阅读 · 0 评论 -
js 语句末尾是否需要加分号 ‘;‘
参考博客ASI 规则(代码的解析规则:除了分号还会以换行为基础按一定的规则作为断句的依据)新行并入当前行构成非法语句时,自动插入分号continue, return, break, throw 后自动插入分号return => return;a+b a+b;++, – 后缀表达式作为新行开始,会在行首自动插入分号代码块的最后一个语句会自动插入分号注:新行以 ( [ / + - * % , . 开始,很容易与上一行未加分号的代码成整体而一起解析...原创 2022-01-04 11:07:20 · 964 阅读 · 0 评论 -
js for in 和 for of
遍历对象 得到其属性需要有enumerablefor in 会遍历出原型上的方法。原创 2021-12-29 20:43:54 · 784 阅读 · 0 评论 -
js 对象拼接的方法 数组 Map Set
三点运算符 拆分到新对象中{...obj, a: 'a', b: 'b'}Object.assign()原创 2021-12-08 13:31:39 · 4035 阅读 · 0 评论 -
JS void 0 javascript:void(0)
参考文章取安全的 undefinedvoid 0 === undefinedundefined 存在风险,因为它不是保留字,用户可以定义undefined做为标识符javascript:void(0) 填充空链接原创 2021-11-19 23:53:12 · 573 阅读 · 0 评论 -
js 事件委托(事件代理) 思路解析
默认事件冒泡e.target 可以获得冒泡的首层类似ul>li至于要对ul添加事件,就可以实现li的事件响应 这就是事件委托原创 2021-08-11 20:46:47 · 263 阅读 · 0 评论 -
JS 获取、添加、删除对象属性的方法
获取属性通过for in 可以获得非Symbol(ES6)的属性for (prop in obj) { console.log(prop);}使用Object提供的方法 返回属性的数组Object.keys(obj) 获得非Symbol(ES6)的属性Object.getOwnPropertyNames(obj) 获得非Symbol(ES6)的属性Object.getOwnPropertySymbols(obj) 获得Symbol(ES6)的属性知识点:如果一对象拥有sym原创 2021-07-28 15:42:34 · 343 阅读 · 0 评论 -
JS call、apply 和 bind 以及 基于call的继承
参考视频call、apply 调用并改变 this 指向,bind不会调用而返回函数call 可以调用函数(包括对象的方法) 可以改变this指向.call() 第一个参数为要将this指向的对象之后的参数为所调用函数的参数.apply() 和 .call() 极其相似,只是传参的方式不同,通过数组包含所有参数.bind() 传参方式与 .call() 相同,但它不会调用函数,可以用函数表达式进而调用。基于call的继承function Animal() { this.eat = fun原创 2021-07-27 18:51:55 · 166 阅读 · 0 评论 -
JS 防抖与节流 思路与实现
例如:对输入内容的动态提示,要监听oninput 但打字会高频触发这个事件。节流 同样是处理高频事件,要求的是一段时间内仅执行一次。后续的高频事件会被空过,理解成 截流 似乎也挺合理。(和硬件上按键抖动类似)描述的是一种。差别:最终响应的事件是第一次触发的。事件,但不需要每次都响应。原创 2021-07-27 17:13:54 · 263 阅读 · 0 评论 -
JS 拷贝对象的方法 深拷贝 与 浅拷贝
深复制和浅复制针对多层对象。简单来说,浅复制只复制创建一层对象的属性,深层会共用;而深复制则递归复制创建了所有层级。深拷贝实现:var cloneObj = function(obj){ var str, newobj = obj.constructor === Array ? [] : {}; if(typeof obj !== 'object'){ //如果不是对象不涉及到深拷贝 return; } else if(window.JSON){原创 2021-06-21 23:28:04 · 263 阅读 · 0 评论 -
js 原型 原型链 基于原型的继承
ECMAScript 标准,符号用于标识 obj 的原型。内部插槽可以通过和函数来访问。这个等同于 JavaScript 的非标准但被许多 JavaScript 引擎实现的属性__proto__访问器。。只是浏览器普遍采用这种实现ECMA标准 允许以此结构创建对象以声明prototype构造函数.prototype 只在new构造实例时起作用,也就意味着修改prototype只会影响之后构建的实例,而不能影响已构建的实例JavaScript 中的所有都有一个被称为的特殊属性,它指向,它与。原创 2021-06-16 23:17:08 · 59 阅读 · 0 评论 -
HTTP Cookie
Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。添加一个过期时间默认情况下,cookie 在浏览器关闭时删除pathcookie 的路径应用:会话状态管理;个性化设置;浏览器行为跟踪;原创 2021-06-16 18:49:23 · 97 阅读 · 0 评论 -
JS 闭包 实现原理 使用闭包的意义
闭包全局变量能够通过闭包实现局部(私有)。在网页中,全局变量属于 window 对象不通过关键词创建的变量会被定义为全局的在 JavaScript 中,所有函数都能访问它们上一层的作用域。拥有相同名称的全局变量和局部变量是不同的变量全局变量,任何代码都可以更改全局变量,而无需调用函数JavaScript 支持嵌套函数定义。function add() { var counter = 0; function plus() {counter += 1;} //plus可以访问原创 2021-06-14 14:40:41 · 228 阅读 · 2 评论 -
JS BOM Timing 定时事件以及 定时的停止
setTimeout() 与 setInterval()window.setTimeout(function, milliseconds)// 在等待指定的毫秒数后执行函数。window.setInterval(function, milliseconds)// 等同于 setTimeout(),但持续重复执行该函数。定时的停止clearTimeout() 方法停止执行 setTimeout() 中规定的函数myVar = setTimeout(function, milliseconds原创 2021-06-11 17:50:59 · 108 阅读 · 0 评论 -
JS JSON
JSON类似 JavaScript 对象属性,名称/值对由(双引号中的)字段名构成JSON 对象和数组原创 2021-06-01 17:08:00 · 451 阅读 · 1 评论 -
JS AJAX XMLHttpRequest 对象 异步请求的方法
Asynchronous JavaScript And XML浏览器内建的 XMLHttpRequest 对象(从 web 服务器请求数据)JavaScript 和 HTML DOM(显示或使用数据)Ajax 应用程序可能使用 XML 来传输数据,但将数据作为纯文本或 JSON 文本传输也同样常见。网页中发生一个事件(页面加载、按钮点击)由 JavaScript 创建 XMLHttpRequest 对象XMLHttpRequest 对象向 web 服务器发送请求服务器处理该请求服务器原创 2021-06-01 16:27:04 · 486 阅读 · 0 评论 -
JS BOM
所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员document 对象也是 window 对象属性属性窗口尺寸window.innerHeight - 浏览器窗口的内高度(以像素计)window.innerWidth - 浏览器窗口的内宽度(以像素计)对于 Internet Explorer 8, 7, 6, 5:document.documentElement.clientHeightdocument.documentElement.clientW.原创 2021-05-31 01:45:32 · 176 阅读 · 0 评论 -
JS 函数 箭头函数
文章目录自动调用函数回调函数箭头函数 (ES6)函数参数.call()与.apply()闭包关键字 functionfunction [functionName]([parameters]) { 代码块}typeof 运算符会为函数返回 “function”arguments.length 会返回函数被调用时收到的参数数目.toString()可以得到函数定义自动调用函数立即执行函数需要用()包裹 函数 后接一对( [填写实参] );(function () { 代原创 2021-05-30 15:11:48 · 103 阅读 · 0 评论 -
JS 对象
W3Cjs对象ArrayBooleanDateMathNumberStringRegExp 正则表达式Functions 全局对象Events 事件Browser 对象HTML DOM 对象ArrayBooleanDateMathNumberStringRegExp 正则表达式Functions 全局对象Events 事件Browser 对象HTML DOM 对象...原创 2021-05-30 13:47:15 · 42 阅读 · 0 评论 -
JS 表单相关内容
可以通过DOM操作,访问HTML表单中的值document.forms["表单名"]["控件名"].valueHTML自动验证 from标签下控件标签添加required字段,会要求非空不适用于 Internet Explorer 9 或更早的版本约束验证约束验证 HTML 输入属性属性描述disabled规定 input 元素应该被禁用max规定 input 元素的最大值min规定 input 元素的最小值pattern规定 input 元素原创 2021-05-27 11:11:16 · 92 阅读 · 0 评论 -
JS 会直接改变源对象的属性方法
数组元素的增删方法:.push().unshift().pop().shift().splice()数组进行排序的方法:.sort().reverse()注意:字符串的.replace() 方法不会改变调用它的字符串。原创 2021-05-26 16:43:26 · 134 阅读 · 0 评论 -
JS 版本 浏览器支持
所有浏览器都完全支持 ECMAScript 3所有现代浏览器都完全支持 ECMAScript 5浏览器版本起始日期Chrome232012 年 9 月Firefox212013 年 4 月IE9*2011 年 3 月IE / Edge102012 年 9 月Safari62012 年 7 月Opera152013 年 7 月* Internet Explorer 9 不支持 ECMAScript 5 “use strict原创 2021-05-26 16:10:47 · 492 阅读 · 0 评论 -
JS 提高性能
循环每次迭代时,坏代码就会访问数组的 length 属性。好代码在循环之外访问 length 属性,使循环更快。//好的代码var i;var len = arr.length;for (i = 0; i < len; i++) {HTML DOM操作很慢,减少DOM操作,将其转化为本地变量var obj;obj = document.getElementById("demo");obj.innerHTML = "Hello"; 缩小DOM树规模,提高DOM操作.原创 2021-05-26 15:53:18 · 101 阅读 · 0 评论 -
JS 编码规范 命名规范
变量与函数的命名采用小驼峰的命名方式采用字母打头,不使用 _ 和 $ 与系统和第三库的变量进行区分全局变量可考虑全大写常量使用全大写命名运算符周围空格双面运算符运算符周围以及逗号之后添加空格缩进采用4空格进行代码缩进制表符tab在不同编译器的解释不尽相同语句规则每条语句以分号结尾虽然一条语句单行的情况下,不写可以编译通过,但不建议这么做对于代码块的处理:在第一行的结尾处写开括号{在开括号前使用一个空格闭括号独占一行,不带前导空格闭括号后不要加分号xxx {原创 2021-05-26 15:33:45 · 654 阅读 · 0 评论 -
JS this 关键字的指向
指代问题:在对象方法中,this 指的是所有者对象。单独的情况下,this 指的是全局对象。在普通函数中,this 指的是全局对象。在严格模式下的函数中,this 是 undefined。在事件中,this 指的是接收事件的元素。call() 和 apply() 方法可以将 this 引用到任何对象.call() 和 .apply()可以用于将另一个对象作为参数调用本对象方法也就是说对象可以通过this返回整个对象本身...原创 2021-05-25 21:55:12 · 182 阅读 · 0 评论 -
JS 的严格模式
严格模式改变了语义。依赖这些改变可能会导致没有实现严格模式的浏览器中出现问题或者错误。执行用户代码采用严格模式有利于保障安全性 (this会undefined)通过this传递给一个函数的值不会被强制转换为一个对象。(with块内变量指向不明,需要运行时确定)为未来的 ECMAScript 提前保留关键字。(ES6以前 新的重名属性会覆盖旧的属性)不会自动创建全局变量,因而对其赋值会报错。属性 会报错(而不是在执行时跳过)只能在脚本或函数的开头被识别。中的变量不会再提升到外部。在一些地方禁止函数声明。原创 2021-05-25 18:24:49 · 59 阅读 · 0 评论 -
JS 作用域相关
全局和局部相关特性JS对未声明的变量赋值,会自动创建全局变量旧版JS只有函数级作用域,(var)没有块级作用域,let和const弥补了这一点在 HTML 中,全局作用域是 window。所有全局变量均属于 window 对象...原创 2021-05-25 17:57:23 · 52 阅读 · 0 评论 -
JS 异常处理
try语句使您能够测试代码块中的错误。catch语句允许您处理错误。throw语句允许您创建自定义错误 抛出异常(error对象包含name和message属性)。finally使您能够执行代码,在 try 和 catch 之后,无论结果如何。原创 2021-05-23 17:49:16 · 251 阅读 · 0 评论 -
JS 数据类型 | 类型确认 | 类型转化 隐式转化规则
fill:#333;color:#333;color:#333;fill:none;12Number基本类型(原始数据)BigIntStringBooleanUndefinedNullSymbolDate引用类型JSONArrayObjectFunction数据类型。变量被重新赋值与这里的概念不同MathError原因: 值 undefined 实际上是从 值 null 派生来的2.原因:非数有无数种值,显然不是指向某一个地址。原创 2021-05-23 17:17:19 · 158 阅读 · 0 评论 -
JS 与C语言的不同之处
文章目录标识符包括`$`符号未赋值的变量,值为undefined支持字符串的相加拼接弱类型,有查看类型的运算符基础数据类型和对象数据类型函数定义需要function关键字,直接使用函数名是调用函数对象比较特殊的运算符特殊的比较运算符特殊的位运算符特殊的算数运算符js提供断点语句标识符包括$符号未赋值的变量,值为undefined支持字符串的相加拼接弱类型,有查看类型的运算符typeof:字符串=>string,数值=>number,布尔值=>boolean,数组=>原创 2021-05-21 16:22:03 · 476 阅读 · 0 评论 -
JS 布尔类型
判断表达式布尔值的全局函数——Boolean(表达式)通常可以直接省去,在需要布尔的地方会自动得到布尔任何(非空)字符串是 true任何包含非零的数值都是 true (也就是说负数也是true)0,-0,“”,undefined,null,NaN 都是false...原创 2021-05-21 16:13:54 · 1207 阅读 · 0 评论 -
JS 数学Math对象 属性和方法
Math没有构造器,直接调用其静态的属性方法属性属性含义E欧拉指数PI圆周率小数点后15位SQRT2根号2SQRT1_2根号1/2LN2ln2LN10ln10LOG2Elog2eLOG10Elg e方法.round(x)返回值是 x 四舍五入为最接近的整数.pow(x, y)返回值是 x 的 y 次幂.sqrt(x)返回 x 的平方根.abs(x)返回 x 的绝对(正)值.ceil(x)返回值是 x原创 2021-05-21 15:54:37 · 143 阅读 · 0 评论 -
JS 日期Date对象 创建及其方法 格式化
new Date()new Date(year, month, day, hours, minutes, seconds, milliseconds)new Date(milliseconds)new Date(dateString)js的月以 0-11 计算年份只写两位以下,默认是 19xx 年milliseconds可以设置为负数,向基准时间之前推转化为字符串的方法.toUTCString()将日期转换为 UTC 字符串 (不考虑时区的加减).toDateString()只显示.原创 2021-05-21 15:38:50 · 1167 阅读 · 0 评论