一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @created 2020-07-01 * @modified * * @description for : var hoisting, brea…
基础 typeof 运算符是 javascript 的基础知识点,尽管它存在一定的局限性(见下文),但在前端js的实际编码过程中,仍然是使用比较多的类型判断方式. 因此,掌握该运算符的特点,对于写出好的代码,就会起到很大的帮助作用. typeof 返回一个字符串,表示该操作值的数据类型,基本语法: typeof operand typeof(operand) 可能返回的类型字符串有:string, boolean, number, bigint, symbol, undefined, funct…
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们.这里说明一点,__proto__属性的两边是各由两个下划线构成(这里为了方便大家看清,在两下划线之间加入了一个空格:_ _proto_ _),本文基于谷歌浏览器(版本 72.0.3626.121)的实验结果所得.   现在正式开始! 让我们从如下一个简单的例子展开讨论,并配以相关的图帮助理解…
让你彻底搞懂JS中复杂运算符== 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容易让人犯错,从而成为JavaScript中“最糟糕的特性”之一. 在仔细阅读了ECMAScript规范的基础上,我画了一张图,我想通过它你会彻底地搞清楚关于==的一切.同时,我也试图通过此文向大家证明==并不是那么糟糕的东西,它很容易掌握,甚至看起来很合理. 图1: ==运算规则的图形化表示 ==运算规则的精确描述在此:The Abstract Equality Comparison…
彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规则 绑定规则的优先级 绑定例外 扩展:箭头函数 this 是什么 理解this之前, 先纠正一个观点,this 既不指向函数自身,也不指函数的词法作用域.如果仅通过this的英文解释,太容易产生误导了.它实际是在函数被调用时才发生的绑定,也就是说this具体指向什么,取决于你是怎么调用的函数. th…
晨叔周刊,每周一话题,技术天天涨. 本周的话题是JS的内存问题(加入本周话题,请点击传送门). 图 话题入口 今天的技术晨报来,就来谈谈JS中变量的,值传递和引用传递的问题.现在,对于很多的JSer来讲,基本不关心堆和栈的问题,代码照样666. 但是,现在的前端,不再是传统的JQ时代,而是MVVM,组件化,工程化.前端的承载着复杂业务逻辑.为此,内存问题,成为JSer必须要考虑的问题. 本文从堆栈讲起,让大家理解JS中变量的内存使用以及变动情况 . 一.初步了解堆栈  先初步了解JS中的堆和栈,…
讲原型的时候,我们应该先要记住以下几个要点,这几个要点是理解原型的关键: 1.所有的引用类型(数组.函数.对象)可以自由扩展属性(除null以外). 2.所有的引用类型都有一个’_ _ proto_ _'属性(也叫隐式原型,它是一个普通的对象). 3.所有的函数都有一个’prototype’属性(这也叫显式原型,它也是一个普通的对象). 4.所有引用类型,它的’_ _ proto_ _'属性指向它的构造函数的’prototype’属性. 5.当试图得到一个对象的属性时,如果这个对象本身不存在这个…
Java中重写equals方法为什么要重写hashcode方法? 直接看下面的例子: 首先我们只重写equals()方法 public class Test { public static void main(String[] args) { User user1 = new User(); User user2 = new User(); System.out.println(user1.equals(user2)); System.out.println(user1.hashCode());…
滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. scrollHeight:在没有滚动条的情况下,元素内容的总高度. 3. scrollTop:被隐藏在内容区域左侧的像素数.设置该值可以改变元素的滚动位置. 4. scrollLeft:被隐藏在内容区域上方的像素数.设置该值可以改变元素的滚动位置. 接下来就举例讲解一下各个属性是什么意思,在这里使…
元素的客户区 元素的客户区大小,指的是元素内容及其内边距所占据的空间大小. 相关属性如下: 1. clientWidth:元素内容区宽度+元素左右内边距 2. clientHeight:元素内容区高度+元素上下内边距 案例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport&qu…