
JavaScript
vmespmvk
~
展开
-
基本类型和引用类型
JS—基本类型和引用类型ECMAScript 变量包含两种不同的数据类型:基本类型和引用类型 基本类型:String、Number、Boolean、Undefined、Null 引用类型:Object下面来谈一下两者的一些区别:获取数据类型使用typeof获取数据类型,返回值为字符串类型//基本类型var mag = "strings&quot原创 2018-05-12 11:30:43 · 469 阅读 · 2 评论 -
立即执行函数 IIFE
IIFE的作用1. 创建作用域:内部保存一些大量的代码以防止命名冲突 2. 一些库的外层用这种形式包起来防止作用域污染 3. 运行一些只执行一次的代码(function(){ var module = require('module'); module.setup(); module.run();})();4. 用闭包保存状态var elems...原创 2018-11-08 20:51:41 · 247 阅读 · 0 评论 -
获取object对象上的属性
1. for…in…let person = { name:"aaa", age:16};for (let x in person) { console.log(x); //name age console.log(person[x]); // aaa 16}for…in和for…of循环的区别:let a = ['A', 'B', 'C'];a.name = 'Hello...原创 2018-11-07 20:23:44 · 8492 阅读 · 0 评论 -
深入理解apply
1. apply的定义func.apply(obj, args);obj:这个对象将代替Function类里的this对象args:这个是数组,他讲作为参数传给Function(args–>arguments)call方法和apply一样,唯一区别是参数列表不一样func.call(obj, [param1, param2, ...]);obj:这个对象将代替Funct...原创 2018-09-26 10:33:21 · 462 阅读 · 0 评论 -
call,apply和bind
apply用途:在特定的作用域中调用函数,实际上等于设置函数体内this对象的值第一个参数:在其中运行函数的作用域第二个参数:参数数组call和apply()方法类似,唯一区别是:apply()把参数打包成Array再传入,call()把参数按顺序传入如:Math.max.apply(null, [3, 5, 4]); //5Math.max.call(null, [3, 5,...原创 2018-09-25 14:17:32 · 321 阅读 · 0 评论 -
原生JS实现数组去重
1. for循环 + indexOffunction fun(arr) { var subArr = []; for (var i = 0; i < arr.length; i++) { if (subArr.indexOf(arr[i]) == -1) { subArr.push(arr[i]); } } return subArr;}console.log(f...原创 2018-09-25 09:56:41 · 775 阅读 · 0 评论 -
变量声明和变量提升
1.作用域变量起作用的范围就是变量的作用域。在JavaScript中唯一能产生作用域的东西是函数。 1)块级作用域:使用代码块限定的作用域。JavaScript中没有块级作用域 2)词法作用域:在代码写好的那一刻,变量的作用域就已经确定了。和词法作用域相对的是动态作用域,JS中没有使用规则:函数允许访问函数外的变量整个代码结构中只有函数可以限定作用域 作用域规则首先使用提升规...原创 2018-05-31 13:57:29 · 4047 阅读 · 8 评论 -
继承的实现
JavaScript中的继承指的是一个对象没有一些属性和方法,但是另外一个对象有,把另外一个对象的属性和方法拿过来用。1、混入式继承 使用for-in遍历对象1的属性,将所有的属性添加到另一个对象2上,这时候就可以称 “对象2 继承自 对象1” 。var o = {}var obj = { name:"Tom", age:18}for (var k...原创 2018-05-26 19:12:55 · 492 阅读 · 0 评论 -
原型链结构
JavaScript主要是通过原型链来实现继承的。所以,通过这篇文章先大概了解一下原型链结构吧~通过学习面向对象中的原型,我们可以知道以下概念:每个构造函数都有原型结构 每个对象都会有构造函数 每个构造函数的原型都是一个对象所以,我们可以得出以下结论:这个原型对象也有构造函数 这个原型的构造函数也会有原型对象这样就会形成一个链式结构,称为 原型链 。1.原型...原创 2018-05-25 18:10:31 · 310 阅读 · 0 评论 -
原型
这篇文章开始之前,先来搞清楚几个概念吧~1.实例化:通过构造函数创建对象的过程 2.实例:通过构造函数实例化出来的对象叫做该构造函数的一个实例。这里需要注意的是:在说实例的时候一定要指定好构造函数,某某某是 某某某构造函数 的一个 实例。下面开始切入正题~1.原型函数构建出来的时候,系统会默认地帮构造函数创建并关联一个神秘的对象,这个对象就是原型。原型默认是一个空的对象,该对象中...原创 2018-05-13 17:04:30 · 824 阅读 · 0 评论 -
使用原型解决构造函数存在的问题
传送门~创建对象的方式JS面向对象—原型综合来看,构造函数是使用较广泛也是最为便利的,但是其实构造函数也会存在一些问题,那么今天我们来看一下构造函数可能存在的问题以及解决办法吧~问题:如果在构造函数中定义函数,那么每次创建对象,都会重新创建该函数,但是函数内部代码完全相同,就造成了资源浪费,复用性极差传统解决办法:将构造函数内的方法进行提取,放在构造函数外面,在构造函数内部进行引...原创 2018-05-12 19:22:38 · 761 阅读 · 0 评论 -
创建对象的方式
面向对象是一种思维方式,是把解决问题的关注点放到解决问题的一系列对象上。与之对应的是 面向过程 ,面向过程也是一种思维方式,是把解决问题的一些关注点放到解决问题的每一个详细的步骤上。可以通过以下几种方式创建对象:1.通过字面量创建对象var obj = { name:"aaa", singer:"bbb"};var obj1 = { name:"xxx", singer:"yyy...原创 2018-05-12 17:05:45 · 430 阅读 · 0 评论 -
防抖节流函数
节流原理:避免处理函数被频繁触发,让函数每隔一段时间执行一次。党在执行周期内被触发时,不允许被执行,所以直接为函数的执行添加时间间隔就OK了。实现:function throttle(fn, mustRun = 500) { let previous = null; return function(...args){ let context = this; let now ...原创 2018-12-10 18:25:20 · 271 阅读 · 0 评论