0

你真的了解ES6函数特性么?

前言 函数是所有编程语言中重要的组成部分,在Es6出现之前 JavaScript的函数语法一直没有太大的变化,从而遗留了很多问题和隐晦的做法,导致实现一些功能需要编写很多代码。函数形参默认值 JavaScript函数有一个特别的地方,就是无论在函数形参里定义了多少参数,都可以传入任意数量的参数,但是有的情况下,我们的参数只是可填,这样的话我们还在函数体呢写一堆逻辑从而导致代码冗余,还好Es6版本出现了函数默认值。我们用Es5和Es6代码来比对一下Es5处理默认参数function person(name, age) { name = typeof(name) != "undefined...

阅读全文>>

0

Js震撼人心的超酷人体模型类库Mannequin.js

简要介绍mannequin.js是一款可以通过JavaScript实现控制人体关节模型的超酷类库。mannequin.js基于经典的Three.js库,官网所展现的Demo效果令人惊奇到掉了下巴,真的是震撼!接下来说下细节。首先,它可以选择创建Male、Female、Child三种人体模型。其次,每种模型可以细分到头部、颈部、躯干、骨盆。上肢可以细分为手臂、肘部、腕部和手指,下肢可以细分为腿,膝盖和脚踝。模型还可以设置动态或者静态的姿势。通过这个类库让前端开发者开启上帝模式,随心掌控模型的一举一动。Github地址https://boytchev.github.io/mannequin.js/...

阅读全文>>

0

这4个问题可以检测出你JavaScript水平的高低

准备JavaScript面试时应了解的事项。JavaScript现在是一种非常流行的编程语言,基于该语言,派生了大量库和框架。 但是,无论高层生态系统如何发展,离不开原始的JavaScript。 在这里,我选择了4个JavaScript面试问题来测试程序员使用普通JavaScript的技能。1.实现Array.prototype.map如何手动实现Array.prototype.map方法?熟练使用数组的内置方法并不难。但是,如果您只是熟悉语法而又不了解原理,那么很难真正理解JavaScript。对于Array.prototype.map,它将创建一个新数组,其中将填充在调用数组中每个元素上调...

阅读全文>>

0

js 手动实现bind方法,超详细思路分析

在模拟bind之前,我们先了解bind的概念,这里引入MDN解释:bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。说的通俗一点,bind与apply/call一样都能改变函数this指向,但bind并不会立即执行函数,而是返回一个绑定了this的新函数,你需要再次调用此函数才能达到最终执行。我们来看一个简单的例子:var obj = { z: 1 }; var obj1 = { z: 2 }; function fn(x, y) { consol...

阅读全文>>

0

怎么在javascript中灵活运用 this

this 是什么Javascriptthis关键词指的是他所属的对象,它拥有不同的值,具体取决于使用的位置和调用方式。使用方式在方法中,它指向这个方法的拥有者在函数中,它是全局对象window严格模式下在函数中,它是undefined单独使用时,它是全局对象window在事件中,它指向触发事件的目标对象e.target不同执行模式下的差异化javascript 中的this不同于其他编程语言,在严格模式和非严格模式下, 它的值是不同的,下面举个例子。// 非严格模式 function foo() { return this } console.log(foo() === window....

阅读全文>>

0

JS的高阶函数和回调函数

高阶函数:如果一个函数的参数或者返回值为一个函数,该函数叫做高阶函数回调函数:作为参数的函数叫做回调函数例如:上述a函数的参数是个函数,为高阶函数。b函数作为a函数的一个参数,所以b函数为回调函数。函数作为返回值:上图函数c的返回值是个函数,所以c也被成为高阶函数。

阅读全文>>

0

研究JavaScript的六项基础与组织方式

一、开宗明义JS的每一个单独的文件都是一个独立的program。二、数值与数据Value and DataJS中的Value就是Data,有两种形式分别为primitive和object。其中primitive包括1)number(bigint), 2)string(interpolate)3)boolean 4) undefined and null 5) Symbol 而剩下的所有的data都是object类型,比如array与function是特殊类型的object。`typeof`检测数据的类型,但有个特殊的bug:typeof null; // "obj...

阅读全文>>

0

JS排序算法:冒泡、选择、插入、归并、快速、希尔、堆、计数

1. 冒泡排序算法实现(javascript)//冒泡排序算法(javascript) //author:Hengda //arr数组 //mode false 升序 ture 降序 function bubbleSort( arr, mode ){ var i, j, temp, len = arr.length; for( i = len - 1 ; i > 0; i-- ){ for( j = 0; j < i; j++ ){ if( mode ? arr[ j + 1 ] < arr[ j ] : arr[ ...

阅读全文>>

0

前端开发-文本拷贝插件

clipboard.js是一款强大且实用的文本拷贝插件,目前github的stars量30K以上一、安装1、通过npm工具安装npm install clipboard --save2、html文件直接导入github搜索clipboard直接下载源码文件包<script src="js/clipboard.min.js"></script>二、使用1、点击按钮拷贝文本框的内容2、点击按钮剪切文本框的内容在按钮上增加属性data-clipboard-action="cut",点击后就会剪切对应目标输入框的内容3、复制按钮自身属性上的文本4、事件监听5、js动态设置文本

阅读全文>>

0

reduce的高级用法

reduce作为ES5新增的常规数组方法之一,对比forEach 、filter和map,在实际使用上好像有些被忽略,发现身边的人极少用它,导致这个如此强大的方法被逐渐埋没。如果经常使用reduce,怎么可能放过如此好用的它呢!我还是得把他从尘土中取出来擦干净,奉上它的高级用法给大家。一个如此好用的方法不应该被大众埋没。下面对reduce的语法进行简单说明,详情可查看MDN的reduce()的相关说明。定义:对数组中的每个元素执行一个自定义的累计器,将其结果汇总为单个返回值形式:array.reduce((t, v, i, a) => {}, initValue)参数callback:回...

阅读全文>>