JavaScript
文章平均质量分 66
JavaScript知识点
Sfh_11
这个作者很懒,什么都没留下…
展开
-
JS之手写bind原理
众所周知,我们在调用某个内置的api时,例如xxx.bind,由于 function xxx 的原型链 指向的是 Function.prototype , 因此我们在调用 xxx.bind 的时候,调用的是 Function.prototype 上的方法,所以我们直接在函数原型链上构建一个我们的_bind方法,Function.prototype._bind = function() {}① 接收比较固定的参数,其他的参数由返回的函数接收使用,提高参数的复用能力,提高函数的适用性。原创 2022-08-22 18:26:22 · 536 阅读 · 1 评论 -
ES5中原型、实例对象和构造函数的那些事
有些朋友学了很久的js,发现到头来对于实例对象和构造函数,以及它们的成员变量和原型链还是比较模糊,所以今天我们花点时间来一起总结一下它们之间的那些"爱恨情仇"吧ES5:在ES5中,往往我们声明一个构造函数都是通过首字母大写的方式来区分它是一个构造函数,下面我们直接通过一个笔试题来一起分析一下其中的知识点function Person(age){ this.age = age;}Person.sing = function(){console.log('我会唱歌');}Person.proto原创 2022-05-13 16:04:16 · 374 阅读 · 0 评论 -
一分钟搞懂JS函数提升与变量提升的优先级
在JS中究竟是函数提升优先级高呢还是变量提升优先级高?一句话:函数⾸先被提升,然后才是变量最近有朋友问我牛客网上的一道JS题,题目如下:这就是很典型的一道考察函数提升和变量提升知识点的面试题,其实上面这部分代码在js编译器中是这样的:// 函数声明提升function foo(x,y){ return x+y}var foovar num// 函数表达式不提升foo = function(x,y){ return x-y}// 函数提升优先级⽐变量提升要⾼,且原创 2022-05-07 11:34:02 · 1236 阅读 · 0 评论 -
关于对JS立即执行函数(function(){...})()的深度理解
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此。要理解立即执行函数,需要先理解一些函数的基本概念。函数声明、函数表达式、匿名函数函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。函数表达式 var fnName = fu原创 2021-09-18 14:56:44 · 212 阅读 · 0 评论 -
JS关于定义函数的区别(为啥推荐第二种方式)
在平时开发的过程中,我们注意到函数的定义方式远不止一种,那么不同函数定义之间它们又有什么区别呢?看到一篇博客写的很不错所以Mark下来同大家分享一下!博主看到了阮一峰大神的一篇博客,12种不宜使用的javascript语法看到第9条的时候获得了启发,如下图:接下来讲一下作者的见解,代码如下: <script> y(); function y() { alert(2); };原创 2021-09-18 11:15:30 · 133 阅读 · 0 评论 -
JS获取JSON字符串的几种方式
之前有人问了一个问题就是关于js获取json数据value值的几种方式,所以今天把一些比较常见的给总结了一下,希望能帮助到大家<script> var obj = {id:1,name:'abd'} //js获取json字符串value的第一种方式 console.log(obj.id); //js获取json字符串value的第二种方式 console.log(obj['id']); Obje原创 2021-09-10 10:50:32 · 5266 阅读 · 0 评论 -
JS给函数添加属性
在JS中我们经常听到一句话就是:万物皆对象,一个变量是一个对象,一个函数是一个对象等等…而在这里面,函数与对象的关系又很微妙,请先思考一句话:对象都是由函数创建的,这句话是对的还是错的?首先我们先看一个小例子: function Fn() { this.name = '王福朋'; this.year = 1988; } var fn1 = new Fn();上面这个例子很简单,它说明对象可以通过函数来创建,但是不是所有对象都是由函数创原创 2022-03-14 16:10:25 · 3346 阅读 · 4 评论 -
10分钟Canvas从入门到实践
我相信有很多小伙伴和我一样,在面试的时候面试官总喜欢问一个问题就是:让你讲讲HTML5新增的标签,而<canvas>就是其中一个非常重要的标签,但是部分小伙伴可能一开始和我一样回答得不太完整或者回答不出来,接下来让我花10分钟带你从入门到实践讲讲一些常用的知识点。首先一句话先总结,什么是canvas?canvas顾名思义是画布、画板的意思,所以它是一个画画的载体,也可以理解成是一个画画的容器,那要如何实现在画板上进行画画的操作呢?答案就是通过我们的JS来实现,所以一句话总结:<canva原创 2021-09-28 11:02:10 · 199 阅读 · 0 评论 -
一文搞懂JS中变量作用域的那些事
最近面试发现有挺多人对JS中的变量作用域还不是太了解,所以花了点时间来总结一下一些常见的问题:1、for和if的作用域首先JS中主要分为两种作用域,一种全局作用域和局部作用域,局部作用域通俗点说就是带有花括号的{ },比如说函数、for和if等等,所以我们先说一下for和if的情况:for(let i=0;i<1;i++){ var a = 1 b = 2 let c = 3 } console.log(a); //输出1 console.l原创 2022-01-10 10:14:17 · 453 阅读 · 0 评论 -
JS中数组splice方法使用需要注意的点
Splice()splice() 方法可以插入、删除或替换数组的元素,注意:同时改变了原数组。1.删除-删除元素,传两个参数,要删除第一项的位置和第二个要删除的项数2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(位置),第二个参数(0),第三个参数(插入的项)3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)在这里我使用的是它的删除功能,直接po代码:let arr = [1,2,原创 2021-11-30 15:44:49 · 745 阅读 · 0 评论 -
JS中for,for...in,for...of和forEach的用法和区别
#### 文章的开头先提个问题:JS中你能想到的遍历数组和对象的方法有哪些?<blockquote>for,for...in,for...of,forEach,在有些情况下我们还可以使用map()方法遍历数组</blockquote>平时我们可能只是知道怎么用,但是对于它们之间的区别可能一知半解,接下来我们花点时间来总结一下:<blockquote>1、for循环</blockquote>基本语法格式:原创 2021-12-16 15:17:42 · 568 阅读 · 0 评论 -
JSON.parse和JSON.stringify的用法
平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用object里面的数据,而这其中涉及到两个必不可少的方法就是JSON.parse和JSON.stringifyJSON.parse()JSON.parse()方法将JSON格式字符串转换为js对象(属性名没有双引号)解析前要保证数据是标准的JSON格式,否则会解析出错const user = '{"name": "Jack","gender": "男","age": 1原创 2021-12-20 17:13:27 · 27471 阅读 · 0 评论 -
e.target与e.currentTarget的区别
起初是在微信小程序的项目中发现了这样一段代码:<label data-url="../logs/logs" bindtap="debug">调试按钮</label>debug: function(e) { console.log(e); let url = e.target.dataset.url; wx.navigateTo({ url: url, }); },然后打开调试器看到e对象的结构发现此时target和curren原创 2021-10-09 09:15:01 · 555 阅读 · 0 评论