JS typeof instanceof 你应该知道这么多
typeof主要是用来判断一个变量的类型 几个特殊的情况记一下: 123456typeof null // objecttypeof {} // objecttypeof [] // objecttypeof Object // functiontypeof Function // functiontypeof undefined // undefined 看到上边 typeof Object 的结果是 function 这里其实因为 Object 是一个构造函数, 而不是一个真正的对象, 只有实例化之后才会给出 object的结果 可以看一下下边代码: 1234console.log(typeof Object); // functionlet ahui = new Object();console.log(typeof ahui); // object 再看到上边: typeof null typeof {} typeof [] 结果都是 object, 很显然, 我们是不能通过 typeof...
JS 函数实参转换为数组
实际参数在函数中我们可以使用 arguments 对象获得 (注:形参可通过 arguments.callee 获得),虽然 arguments 对象与数组形似,但仍不是真正意义上的数组。 0: […arguments]这个方法其实是用来代替下边方法一的 一:通过 Array.prototype属性调用 slice 方法1const args = Array.prototype.slice.call(arguments) Array 本身是没有 slice 方法,它的方法在 Array.prototype中,而我们在调用 slice 方法的时候,如果在 Array 本身没有找到 slice 方法的话,会通过它的原型链往上查找。 二. 通过调用[]的slice方法1const args = [].sclice.call(arguments, 0) 注意这里是[], 不是 Array,为什么呢? 先看下边 12345typeof []; // objecttypeof Array; // Funcion[].__proto__ === Array.prototype;...
JS new 一个对象的过程
首先让我回忆一下创建对象的三种方法 单休模式 1234567891011const Person = { name: "angelee", sayname: function() { return this.name; }}let ahui = Object.create(Person);ahui.name = "ahui"console.log(ahui.sayname()) // ahui 构造函数 123456789const Person = function (name) { this.name = name;}Person.prototype.sayname = function () { return this.name;}let ahui = new Person("ahui");console.log(ahui.sayname()); // ahui ES6...
JS prototype
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例。但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的’,而是通过构造函数(constructor)和原型链(prototype...
JS 数据类型你应该知道的可不止这些
基本数据类型string, number, boolean, null, undefined 基本数据类型的变量是保存在栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量 当比较两个基本数据类型的值时,本质上是比较值 引用类型object 对象是保存在堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当修改其中一个变量修改属性时,另一个也会受到影响 当比较两个引用数据类型时,本质上是比较的对象的内存地址,如果两个对象的属性是一模一样的,但是地址不同,也会返回false。 数据结构中的栈和堆 栈 :这是一种连续存储的数据结构,具有先进后出的性质。通常具有的操作有出栈、入栈(压栈)和取栈顶元素。想要读取栈中的某个元素,就必须将其之前所有的元素出栈才能完成。 ...
JS dom元素位置相关的内容
offsetWidth: 返回元素的宽度(包括元素宽度 + 内边距 + 边框,不包括外边距) offsetHeight: 返回元素的高度(包括元素高度 + 内边距 + 边框,不包括外边距) clientWidth: 返回元素的宽度(包括元素宽度 + 内边距,不包括边框和外边距) clientHeight: 返回元素的高度(包括元素高度 + 内边距,不包括边框和外边距) style.width: 返回元素的宽度(包括元素宽度,不包括内边距、边框和外边距) style.height: 返回元素的高度(包括元素高度,不包括内边距、边框和外边距) scrollWidth: 返回元素的宽度(包括元素宽度 + 内边距 + 溢出尺寸,不包括边框和外边距),无溢出的情况,与clientWidth相同 scrollHeigh: 返回元素的高度(包括元素高度 + 内边距 + 溢出尺寸,不包括边框和外边距),无溢出的情况,与clientHeight相同 style.width...
eslint 常用配置中文注释
注意这里的数字:0表示不不处理,1表示警告,2表示错误并退出这里的 0,1,2 也可以用 off, warn, error, 表示: “off”或者0 //关闭规则关闭“warn”或者1 //在打开的规则作为警告(不影响退出代码)“error”或者2 ...
学习笔记3 常见运算题
一些讲运算结果类型的面试题【不定时更新】 1234567891011var name = "Hello";var object = { name: "world", getNameFunc: function() { return function() { return this.name; }; }};console.log(object.getNameFunc()()); // Hello object.getNameFunc() 返回的就是一个 function,function () { return this.name } 123456789101112var name = "Hello";var object = { name: "world", getNameFunc: function() { var that = this; ...
react render 原理
JSX 代码经过 babel 编译之后变成 React.createElement 的表达式,这个表达式在 render 函数被调用的时候执行生成一个 element。 在首次渲染的时候,先去按照规则初始化 element,接着 ReactComponentComponentWrapper 通过递归,最终调用 ReactDOMComponent 的 mountComponent 方法来帮助生成真实 DOM 节点。 地址一: React 从渲染原理到性能优化(一) 地址二: React 从渲染原理到性能优化(二)– 更新渲染
学习笔记2 JS基础知识
课程地址: JavaScript 基础知识 基础数据类型js 数据类型: ‘usbno’ undefined: 未定义stringbooleannumberobjectnull JS 基本数据类型: undefined, string, number, boolean, null function 不是数据类型object 是复杂数据类型 NaNnot a number isNaN 跟谁都不相等, 包括它本身typeof NaN // “number” 检测一个变量是不是 NaN ES6: isNaN()ES5: a != a 为 false 不是 NaN, 为 true 则是 NaN js 作用域链当前函数作用域找不到的时候就去它的父级找 123456789var a = 666;function show() { var a = 233; show2();}function show2() { console.log(a);}show(); // 666 这是因为 show2...