随笔分类 - JavaScript 面向对象编程
浅谈闭包(防抖,节流,函数柯里化)
摘要:闭包参考文章 谈谈你对闭包的理解 概念: (1) 闭包就是引用了另一个函数的变量的函数 (2) 闭包一般是函数嵌套,一个函数返回另外一个函数,内部函数访问外部函数的变量就形成了一个闭包 作用(优点): (3) 闭包的优点是可以私有化变量,将变量私有化到函数内部,并在私有化的基础上进行数据保持 用途:
this的指向及改变
摘要:this的指向 谁调用,指向谁 (指向当前调用的直接上级) 箭头函数的this指向调用它的上一级 改变this的指向 call,apply call为fn提供了改变this的机会,此时的this也就是obj对象。 var name = "听风是风", obj = { name: 'echo' };
事件循环
摘要:事件循环 事件循环即js运行机制 js是单线程,先同步后异步,先微观再宏观 所有同步任务都在主线程进行,形成一个执行栈, 主线程之外还有一个“任务队列”,异步任务有了结果会在任务队列中防止一个事件 一旦执行栈中的所有同步任务完成之后,系统默认会读取任务队列中的的事件,结束等待状态 主线程不断重复第三
splice和slice的区别
摘要:splice和slice的区别 关于这两个常用的用法 splice常用来删除数组中的某一项 会改变原数组的长度 适用于 数组 slice用来截取数组中的某一段 不会改变原数组的长度 适用于 数组、字符串 两个最大的不同就是 对原数组的改变,如果不考虑原数组的改变用哪个都行,arr.slice()和a
函数调用加括号与不加括号的区别
摘要:写在前面:最近做的一个项目用是很久之前的,在维护项目中就无法使用vue等技术来操作,所以一些方法用的是原生来写的,在绑定点击方法时,方法名没加括号,就没生效,加了括号就生效了,当时有疑惑的点是在之前做vue的项目中,我记得不加括号也是完全可以的,于是就详细的查了一下。 原生方法调用函数 在scrip
导出模块成员
摘要:使用module.exports对象导出模块成员 每个模块内部都有一个 module 对象,代表当前模块,我们可以使用它的 exports 属性导出模块成员。该属性的初始值为一个空对象,我们只需要将被导出的成员添加为该对象的属性即可。例如: 1 // 模块私有的成员 2 function divid
es5中数组的迭代方法 forEach,map,filter,some,every
摘要:1.forEach()map()方法 遍历数组 map()和forEach相似,都是遍历 ,不会改变原数组,不会对空数组进行检测 2.filter过滤器 筛选出需要的数组元素 (所有的) 3.some() map()查找数组中有没有满足条件的数组 返回的是一个布尔值,只要找到第一个满足的元素存在即停
对象深拷贝
摘要:JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了 就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象; 深拷贝 function deeoClone(obj) { // 判断类型
匿名函数
摘要:匿名函数:函数调用不能写在函数上面,变量会提升,但是值将不会被提升,所以报错将不是一个函数 1 baz(); 2 var baz = function(){ 3 console.log('aaaadfsdgsdd') 4 5 } 1 var baz = function(){ 2 console.l
立即执行函数的表达式
摘要:1 <script> 2 3 // 立即执行的函数表达式(Immediately-invoked function expression,IIFE)也被称为自执行函数。 4 5 // 最常见的写法一: 6 // (function foo () { 7 // console.log('foo') 8
函数的使用场景
摘要:1.作为其他变量的值 函数作为其他变量的值。可以直接调用; 1 <!DOCTYPE html> 2 <html lang="zh"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-w
函数的参数
摘要:形参:创建函数时声明的参数。 实参:调用函数时(实际)传入的参数。 JS 中的函数不限制参数的数量,也不限制参数的类型。 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="view
构造函数的形式创建函数
摘要:使用构造函数的形式创建函数,不建议使用,不易于阅读,不易于调试 1 <script> 2 3 // 使用构造函数的形式创建函数,不建议使用,不易于阅读,不易于调试 4 var foo = new Function('x', 'y', 'if (x > y) {return x;} else {ret
使用字面量的形式创建函数
摘要:使用字面量的形式创建函数有三种方式: 函数声明(关键字声明) 函数表达式 匿名函数 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="widt
global对象,数据存储方式和检测,包装器对象等
摘要:1.理解global对象 global对象是作为 window 对象的一部分实现的,我们无法通过代码访问到 global 对象。 我们平时在全局环境下定义的内容(变量,函数,常量等等)都是作为 global 对象的属性存在的(都属于 global 对象) 2.基本类型(原始类型)数据的存储方式 变量