JavaScript笔记
文章平均质量分 69
JavaScript
web前端定做
这个作者很懒,什么都没留下…
展开
-
js中的Promise详解
一 概述Promise是异步编程的一种解决方案,可以替代传统的解决方案–回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有一下两个特点: * (1)对象的状态不受外界影响。 * (2)一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。二 Promise的状态Promise有三种状态,分别是:**Pending **(进行中), ** Resolved (已完成), Rejected ** (已失败)。Promise从Pending状态开始转载 2021-11-30 02:26:24 · 4327 阅读 · 1 评论 -
for...in、for...of、forEach、some、every、filter、reduce 数组遍历的几种方法
for…in - 语句遍历对象的枚举的属性,以任意顺序for…of - 语句遍历可迭代对象定义要遍历的数据,可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。for…inlet list = [{ name: "张三", age: 10 }, { name: "李四", age: 20 }, { name: "赵五", age: 30 }]for (index in原创 2021-11-26 20:16:47 · 640 阅读 · 0 评论 -
js ( => ) 箭头函数
是ES6标准新增的函数x => x*x///相当于function (x) { return x*x;}箭头函数只包含一个表达式时,{ … } 和 return 都可以省略掉;但当包含多条语句时,就不能省掉了。如果参数不止一个,就需要用括号()括起来:(x, y) => x*x + y*y;() => 1002;(x, y, ...) => { var i, sum = x + y; for(i = 0; i < arrays转载 2021-08-13 14:31:14 · 146 阅读 · 0 评论 -
js中__proto__和prototype的区别和关系?
1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。即:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。2.方法(Function)方法这个特殊的对象,除了和其他对象一样有上述_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途转载 2021-07-26 13:27:34 · 123 阅读 · 0 评论 -
漫谈JS中的prototype,用月饼厂添加工艺,汉字代码通俗解读
1. 引言继承(inheritance)、封装(encapsulation)和多态(polymorphism)是面向对象机制的主要特性。在JS中没有“class”的概念,自然也无法直接进行JAVA、C常用到的extends、implements等操作。但从某种意义上来说,JS是纯粹的“面向对象”编程语言,因为JS中处处皆是对象(函数也是对象),而且作为函数式脚本语言,天生就是多态的。 网上很多文章探讨JS中如何设计class和面向对象机制,这些文章的思路聚焦于如何严格按照JAVA、C中面向对象的实现机转载 2021-07-21 00:47:43 · 138 阅读 · 0 评论 -
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
1. 前言作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们。 这里说明一点,__proto__属性的两边是各由两个下划线构成(这里为了方便大家看清,在两下划线之间加入了一个空格:_ _proto_ _,读作“dunder proto”,“double underscore proto”的缩写),实际上,该属性在ES标准定义中的名字应该是[[Pro转载 2021-07-20 15:27:34 · 202 阅读 · 0 评论 -
js prototype 原型对象
每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函转载 2021-07-20 14:58:37 · 162 阅读 · 0 评论 -
js call
call 方法调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj [,arg1[, arg2[, [,.argN]]]]])参数thisObj:可选项。将被用作当前对象的对象。arg1, arg2, , argN:可选项。将被传递方法参数序列。call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。转载 2021-07-20 14:27:12 · 164 阅读 · 0 评论 -
let与var在for循环体内作用域。使用setTimeout()函数
var与letsetTimeout()使用var在for中定义因为var在此定义的作用域是在函数内 (这里的 i 是函数局部变量),每一次循环的 i 是同一个 i又因为setTimeout()函数与其内部的函数是异步执行的,即setTimeout()执行时,内部的函数(下图中timer())也在执行,for函数执行完毕,但1s还没到,此时等待执行的函数是console.log(i) console.log(i) console.log(i) console.log(i) console.log(i原创 2021-07-20 14:19:59 · 208 阅读 · 0 评论 -
var、let 定义变量区别
var a = 5;var b = 10; if (a === 5) { let a = 4; // if 块级作用域 var b = 1; // 函数级作用域,这里是if块,非函数 console.log(a); // 4 console.log(b); // 1} console.log(a); // 5console.log(b); // 1var声明的变量是函数级的或者是全局的,而let用于声明块级作用域。在函数或程序顶层使用时,let与var没有什么区别原创 2021-07-20 14:20:39 · 60 阅读 · 0 评论 -
javascript回调函数详解
<script type="text/javascript"> function add(a, b, fun) { let sum = a + b; fun(sum); } function log(sum) { document.write("我是方法1,拿到的数字是:" + sum+"</br>") } //方法1 add(2, 3, log) //方法2: 内嵌函数方法: add(2, 3, function (su.原创 2021-07-20 14:20:48 · 8294 阅读 · 0 评论 -
function函数,内嵌两个返回return,解读(vue,js知识点)
#返回数字(number)function fn1(){ return 100;}alert(fn1());//可以理解为 fn1() = 100; 函数名称加括号等于return出来的东西#返回函数(function)function fn3(){ return function(){ alert("1");// }}alert(fn3()); // 调用后返回这块函数: function(){ alert("1");}alert(fn3()()原创 2021-07-19 13:55:35 · 2020 阅读 · 0 评论 -
JS 创建自定义对象的方法
工厂模式优点:接受参数,可以无数次的调用这个函数,创建Person对象,而每次他都可以返回一个包含三个属性一个方法的对象。缺点:虽然解决了创建多个相似对象的问题,但是没有解决对象识别的问题(即怎么知道一个对象的类型)。构造函数模式JS中可以创建自定义的构造函数,从而定义自定义对象属性和方法。♦ Person()中的代码和createPerson()的不同之处:1、没有显式地创建对象2、直接将属性和方法赋给了this对象3、没有return语句♦ 要创建Person对象的新实例,必须使用转载 2021-07-19 13:39:24 · 228 阅读 · 0 评论 -
forEach()和map()遍历
❀ forEach参数arr.forEach(function(self,index,arr){},this);self:数组当前遍历的元素,默认从左往右依次获取数组元素。index:数组当前元素的索引,第一个元素索引为0,依次类推。arr:当前遍历的数组。this:回调函数中this指向。❀ map参数map() 返回一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 let list = ["a", "b", "c"] var str = list.原创 2021-07-19 00:24:31 · 1459 阅读 · 0 评论 -
js中 for in 与 for of 区别,和遍历对象的3种方法
for in是ES5标准,遍历key. (或是数组下标)for of是ES6标准,遍历value. let list = ["a", "b", "c"] for (let item in list) { console.log(item) //结果是 0、1、2 }for-in是为遍历对象而设计的,不适用于遍历数组。遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0",“1”,"2"等是字符串 let list = ["a", "b",原创 2021-07-18 23:43:23 · 1085 阅读 · 0 评论 -
Map()与 Set()的理解和使用
#Map和SetMap和Set是ES6标准新增的数据类型,请根据浏览器的支持情况决定是否要使用。不能用下标获取元素。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。具有iterable类型的集合可以通过新的for … of循环来遍历。#MapMap是一组键值对的结构,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Array:var names = ['Michael', 'Bo转载 2021-07-18 22:26:00 · 197 阅读 · 0 评论