js
文章平均质量分 77
jiang_my
知其然,知其所以然~
展开
-
js基础-继承
继承其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。首先了解下原型链了解原型链之前先知道,每个实例对象(object)都有一个私有属性(称之为__proto__)指向它的原型对象(prototype),该原型对象也有一个自己的原型对象(为__proto__) ,层层向上直到一个对象的原型对象为 null分析如下:构造函数(Super) 有一个原型对象 prototype,Super的原型对象prototype 包含一个指向构造函数的指针,Super的实例(new Supe原创 2020-07-02 15:11:32 · 130 阅读 · 0 评论 -
js基础-事件处理程序
本文旨在简单梳理事件处理程序的几种方式~~~js事件处理程序的几种方式参考:[http://wiki.jikexueyuan.com/project/brief-talk-js/event-handlers.html]HTML 事件处理程序js 指定事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE 事件处理程序HTML 事件处理程序两个缺点:存在时差问题html 和 js 代码紧密结合js 指定事件处理程序DOM0级以这种方式添加的事件处理程序原创 2020-07-02 15:10:39 · 138 阅读 · 0 评论 -
js基础-声明提升
声明提升概念:变量和函数的声明会在物理层面移动到代码的最前面,但这么说也并不准确。实际上变量和函数在代码里的位置是不会变的,而是在编译阶段被放入内存中。常见的示例如下:var x = 1; // 声明 + 初始化 xconsole.log(x + " " + y); // '1 undefined'var y = 2; // 声明 + 初始化 y//上面的代码和下面的代码是一样的 var x = 1;原创 2020-07-02 15:09:31 · 173 阅读 · 0 评论 -
js基础-this机制
this 机制绑定规则默认绑定隐式绑定显示绑定new绑定默认绑定独立函数调用function foo() { console.log( this.a );}var a = 2foo() // 2本例中,函数调用时应用了this的默认绑定,因此this指向全局对象在代码里,foo() 是直接使用不带任何修饰的函数引用进行调用的,因此只能使用默认绑定,无法应用其他规则注意: 如果使用严格模式(strict mode),那么全局对象将无法使用默认绑定,因此this会原创 2020-07-02 15:08:22 · 104 阅读 · 0 评论 -
js基础-判断js数据类型的方法
首先了解一下js的数据类型:查阅了MDN文档 最新的 ECMAScript 标准定义了7种数据类型:6种原始类型booleanNullUndefinedNumberStringSymbol和 Object (Regexp,Function,Array,Date 。。。)typeoftypeof 判断一个变量的类型可以得到这几种结果:Number、 String、 Boolean、 Function、 Object、 Undefined、 Symbol例如:使用type原创 2020-07-02 15:07:27 · 127 阅读 · 0 评论 -
js基础-常用的高阶函数
forEach遍历数组中的每一项,为每个元素调用制定的函数是es5 的方法 (IE9 以下不可用)可替代 for 循环,但是 forEach 不能中断循环(不能使用break 或者 return 语句)这里简单提一下 for in 和 for offor of 是es6方法 可以代替 forEach方法let obj1 = ['judy', 'nick']for (let key in obj1) { console.log(key) // 0 1}let obj =原创 2020-07-02 15:06:17 · 102 阅读 · 0 评论 -
事件循环相关题目
代码一async function async1(){ console.log('async1 start') await async2() console.log('async1 end')}async function async2(){ console.log('async2')}console.log('script start')setTi...原创 2019-12-24 21:19:11 · 592 阅读 · 0 评论 -
js中两次取反(!!)的意义
其实就是将目标对象转变成对应的boolean类型而已。取反操作“!”会得到与目标对象代表的布尔型值相反的布尔值,而再做一次取反就得到了与其相同的布尔值。也就是说,对一个对象xx,执行Boolean(xx)和!!xx是一样的,只是编程技巧而已双感叹号才能真正的将他转换成对应的Boolean值,第一个感叹号是将其转化成Boolean类型的值,但是这一操作得到的是其取反以后的值,在进行一次取反运算才...转载 2019-01-15 14:51:23 · 5415 阅读 · 0 评论 -
js 浮点数计算精度问题
/** * 校验是否为数字 * @param arg * @return */function checkIsNumber(arg){ if(arg != null && arg.toString() != ""){ var re = /^-?(0|[1-9]+\d*|[1-9]+\d*\.\d+|0\.\d+)$/; if(re.test...转载 2018-11-14 16:19:59 · 272 阅读 · 0 评论 -
数组遍历
数组遍历使用for循环是数组遍历最常见的方法var keys = Object.keys[o] // 获得o对象属性名组成的数组var values = []for (var i =0; i < keys.length; i++) { var key = keys[i] values[i] = o[key]}for (var i = 0, len = keys...原创 2018-11-15 20:11:37 · 808 阅读 · 0 评论 -
String
charAt() 可返回指定位置的字符concat() 用于连接两个或多个字符串indexOf() 返回某个指定字符串值在字符串中首次出现的位置lastIndexOf() 从后向前检索字符串match() 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配replace() 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串search() 检索与正则表达式相匹配的...原创 2018-04-20 19:26:09 · 114 阅读 · 0 评论 -
学习javaScript数据结构与算法
数组创建数组var members = [0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, 10]添加元素向数组末尾添加:members.push(11)向数组开头添加:members.unshift(-1)删除元素从数组末尾删除:members.pop()从数组开头删除:members.shift()tips:通过push 和 pop,就能用数组来...原创 2018-04-09 12:06:13 · 307 阅读 · 0 评论 -
JavaScript:理解事件、事件处理函数、钩子函数、回调函数
js获取dom数据的两种方式:1 js派函数监听事件 =>监听函数就是所谓的钩子函数=>函数钩取事件:函数主动找事件=>钩子函数2 js预留函数给dom事件,dom事件调用js预留的函数 =>事件派发给函数:事件调用函数=>回调函数打个形象的比喻:书店、你、你小表弟、书店美女店员书店暂时没有你要的书,咋办呢? 1)你无耻的派了你小表弟在书店24小时蹲转载 2017-06-29 15:46:08 · 1246 阅读 · 0 评论 -
js执行上下文
所谓执行上下文,就是 Js 执行的时候的一个运行环境/作用域(scope),有如下几种情况:全局执行上下文/作用域:js代码的默认执行环境(只有一个)函数执行上下文/作用域:每个函数对应的执行环境(无限多个)eval 代码执行上下文:使用 eval 执行的脚步的执行环境全局作用域中的方法、变量,可以被其它任何函数作用域所访问,函数作用域中的方法变量,在子函数作用域中可以访问转载 2017-06-15 17:23:23 · 290 阅读 · 0 评论 -
前端大牛对学习前端的建议
vue的作者 尤雨溪 :对于学习上的建议,一个是学好英文,这样可以主动地吸收国外前端社区的最新动态,接触最前沿的理念,遇到问题搜索起来也更容易找到解决方案,甚至可以直接去看规范。另一个就是善用 GitHub,多看别人的代码,这和多看书才能写出好文章是一个道理。对感兴趣的技术,自己动手摸索着造个简陋的轮子,就会明白难点在哪里,也会更容易理解别人的源码为什么要这样写。原创 2017-06-30 20:16:26 · 642 阅读 · 0 评论 -
js取随机数
主角:Math对象方法:random()Math.random() 方法返回大于等于0小于1的一个随机数套用下面的公式,就可以利用Math.random() 从某个整数范围内随机选择一个值公式:值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)例如: var num = Math.floor(Math.random() * 10 + 1) ...原创 2017-07-15 22:35:59 · 451 阅读 · 0 评论 -
判断JavaScript对象为null或者属性为空
最终参考文章:https://juejin.im/post/5aba32d9f265da239e4e1b6c空值 (null):var isNull = function (obj) { return obj === null;};未定义 (undefined)方法1(极力推荐)var isUndefined = function (obj) { return obj ...转载 2017-07-28 21:22:15 · 26199 阅读 · 1 评论 -
javascript停止冒泡和阻止浏览器默认行为
当需要使用冒泡行为时:function stopBubble(e) { //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) //因此它支持W3C的stopPropagation()方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 wind转载 2017-10-13 19:22:38 · 170 阅读 · 0 评论 -
js 监听滚动事件
1) window.onscroll = function() {}2) document.addEventListener("onscroll", function (e) {})原创 2017-10-16 19:42:34 · 15440 阅读 · 0 评论 -
Object.defineProperty
意思是:给对象定义属性给对象定义属性的方式有以下几种let newobj = {}1) newobj.name = "judy"2) newobj["name"] = "judy"3) Object.defineProperty(newobj, "name", { value: "judy"})...原创 2018-03-25 17:34:08 · 105 阅读 · 0 评论 -
关于js 变量作用域的小记录
先放一段代码var scope="global"; function t(){ console.log(scope); var scope="local" console.log(scope); } t();先猜下输出结果是什么。。。.......公布答案喽~undefinedlocal原因:其实它等同于原创 2017-06-29 18:06:45 · 163 阅读 · 0 评论