JavaScript
文章平均质量分 94
山鬼谣弋痕夕
学习,记录,改变
展开
-
js实现trim()去空格
https://blog.csdn.net/mafan121/article/details/51648003trim()是一个很适用的方法,作用是去除字符串两边的空白,但是js本身并未提供这个方法,下面介绍js使用trim()的方法。1.通过原型创建字符串的trim()//去除字符串两边的空白String.prototype.trim=function(){ return ...转载 2018-09-16 23:10:45 · 54949 阅读 · 2 评论 -
深入理解JS执行--创建执行上下文(变量对象,作用域链,this)
http://www.cnblogs.com/Ry-yuan/p/7868029.html一、介绍本篇继上一篇深入理解js执行--单线程的JS,这次我们来深入了解js执行过程中的执行上下文。本篇涉及到的名词:预执行,执行上下文,变量对象,活动对象,作用域链,this等二、预执行在上一篇说到,在js代码被执行,执行上下文会被压进执行栈中,但是在此之前还有一步工作要做,就是创...转载 2018-08-10 17:09:52 · 403 阅读 · 0 评论 -
js中几种实用的跨域方法原理详解
js中几种实用的跨域方法原理详解转载地址:https://www.cnblogs.com/2050/p/3191744.html这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。下表给出了相对http://store.co...转载 2018-08-06 17:39:41 · 132 阅读 · 0 评论 -
js实现继承的几种方法
js实习继承的几种方法:1. for-in继承:function Person(){ //父类this.name="水煮鱼";this.age=18;}function Son(){ //子类}var p=new Person();var s=new Son();for(var k in p){s[k]=p[k];}console.log(s...原创 2018-08-06 14:35:51 · 243 阅读 · 0 评论 -
javascript原型对象、构造函数和实例对象
一、首先说一下什么是构造函数:构造函数:用来在创建对象时初始化对象。特点:构造函数名一般为大写字母开头;与new运算符一起使用来实例化对象。举例:function Person(){} //Person构造函数var p=new Person(); //Person构造函数创建对象,也可叫做实例化二、什么是原型?原型:构造函数在创建的过程中,系统自动创建出来与构造函数...转载 2018-08-06 14:22:37 · 643 阅读 · 0 评论 -
js内存、继承、创建对象方法
JavaScript的有几种类型的值?,你能画一下他们的内存图吗?栈:原始数据类型(Undefined,Null,Boolean,Number、String)堆:引用数据类型(对象、数组和函数)两种类型的区别是:存储位置不同;原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;引用数据类型存储在堆(heap)中的对象,占据...转载 2018-08-14 09:14:41 · 232 阅读 · 0 评论 -
JavaScript中Array数组的join用法
join(),这个方法的功能就是:将array数据中每个元素都转为字符串,用自定义的连接符分割,如果 join()里面不加任何参数,用法与toString()一样join()方法的使用,我们看一个例子来了解join的方法:var num = Array("hello","word");console.log(num.join());console.log(num.join(""));...原创 2018-07-21 16:20:40 · 10921 阅读 · 1 评论 -
Promise学习
在JavaScript的世界中,所有代码都是单线程执行的。由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现:function callback(){ console.log('Do something');}console.log('before setTimeout()');setTimeout(callback...原创 2018-07-21 11:15:58 · 297 阅读 · 0 评论 -
js中function解析顺序实例
js里面没有函数重载的概念,在其他语言中(如java)java中,可以存在同名函数,只要传入的参数数量或者类型不同即可。函数的名字仅仅是一个包含指针的变量而已, 即使在不同的环境下执行,全局的某个函数比如说say()和具体某个对象的o.say()函数是一样的。举个例子:<script> var m= 1, j = k = 0; function add...原创 2018-07-15 11:10:07 · 713 阅读 · 0 评论 -
一个例子看懂js函数作用域
var myObject = { foo: "bar", func: function() { var self = this; console.log(this.foo); console.log(self.foo); (function() { console.log(this.f...原创 2018-07-15 10:37:56 · 355 阅读 · 0 评论 -
js构造函数继承和非构造函数继承
一、使用apply实现构造函数绑定继承function Animal(){ this.species = "动物";}function Cat(name,color){ Animal.apply(this,arguments); this.name = name; this.color = color;}var cat1 = new Cat(...转载 2018-08-14 19:59:54 · 716 阅读 · 0 评论 -
JavaScript的事件机制详解
JavaScript的事件机制详解转载 https://www.jb51.net/article/103233.htm事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScript中最重要的主题之一。本文将详细探讨JavaScript的事件机制,并对比分析了浏览器之间的不同,具体内容包括事件流、事件处理程序绑定方式、事件对象等。事件是将JavaScript脚本与网...转载 2018-08-11 16:24:25 · 214 阅读 · 0 评论 -
JS获取DOM元素位置与大小
JS获取DOM元素位置与大小https://www.cnblogs.com/mackxu/archive/2012/12/29/html_window_dimension_position.html每一个HTML元素都有以下属性offsetWidth offsetHeight offsetLeft offsetTop clientWidth clientHe...转载 2018-08-29 16:57:00 · 2629 阅读 · 0 评论 -
javascript中的arguments对象(函数内置对象)
avascript中的变量对象https://www.cnblogs.com/-walker/p/5600393.html在JS中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。1,什么是变量?这个函数体内的参数非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[I]和。长度。2,有什么作用?JS语法不支持重载!但可用参数对象模拟重载效果。参...转载 2018-08-24 17:24:16 · 549 阅读 · 0 评论 -
ES6中let命令和const基本用法
let基本用法ES6了新增let命令,用来声明变量。它的用法类似var,但是所声明的变量,在只let命令所在的代码块内有效值。{ let a = 10; var b = 9;}a // ReferenceError: a is not defined.b // 9上面的代码块里,用分别let状语从句:var声明了2个变量。然后在代码块之外调用这个2歌变量,查询查...转载 2018-08-20 15:35:00 · 230 阅读 · 0 评论 -
ES6 Promise详细用法(我见过最简洁优秀的文章)
https://blog.csdn.net/shan1991fei/article/details/78966297ES6 Promise 先拉出来遛遛复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?函数? 别猜了,直接打印出来看看吧,console.dir(Promise),就这么简单粗暴。...转载 2018-08-20 14:53:52 · 367 阅读 · 0 评论 -
splice-----强大的数组方法
splice()的主要用途是向数组中部插入项,方式有以下三种:1、删除:可以删除任意数量的项,只需要指定两个参数:要删除的第一项的位置和要删除的项数。2、插入:可以向指定位置插入任意数量的项,只要提供三个参数:起始位置、0(要删除的项数)、和要插入的项。3、替换:可以向指定位置插入任意数量的项,同时删除任意数量的项,指定三个参数:起始位置、要删除的项数、和要插入的任意数量的项。sp...原创 2018-08-18 11:21:52 · 4758 阅读 · 1 评论 -
操作符使用技巧注意点实例
操作符(运算符)http://www.cnblogs.com/Ry-yuan/p/7501214.html包含算术操作符,位操作符,关系操作符,相等操作符。1一元操作符只能操作一个值的操作符称为一元操作符。1.1递增与递减:形式: 这就是自增自减,使用两个加号(++)或两个减号( - )num = 5;num++; //相当于num = num+1; ...转载 2018-08-13 09:55:32 · 293 阅读 · 0 评论 -
js中的Object类型
Object类型ECMAScript中的对象其实就是一组数据和功能的集合。通过new操作符后跟要创建的对象类型的名称来创建。//创建一个Object对象var o = new Object();关键:这里的Object相当于祖宗一样,创建Object的实例并没有什么用处。他像是java中java.lang.Object 对象一样。特点:每个Object类型的实...原创 2018-08-13 09:36:55 · 1509 阅读 · 0 评论 -
js 的解析机制理解变量提升
理解js 的解析机制,有利于理解js中的变量提升:遇到 script 标签的话 js 就进行预解析,将变量 var 和 function 声明提升,但不会执行 function,然后就进入上下文执行,上下文执行还是执行预解析同样操作,直到没有 var 和function,就开始执行上下文。如:a=5;show();var a;function show(){};预解析:...原创 2018-08-03 14:39:23 · 217 阅读 · 0 评论 -
什么叫做类数组对象
什么叫做类数组对象?JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法。而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情...原创 2018-08-12 21:34:37 · 2364 阅读 · 0 评论 -
JavaScript getUTCHours() 方法
JavaScript getUTCHours() 方法定义和用法getUTCHours() 方法可根据世界时 (UTC) 返回时间的小时。返回 dateObject 用世界时表示时的小时字段,该值是一个 0(午夜) ~ 23(晚上 11 点) 之间的整数。提示和注释:注释:由 getUTCHours() 返回的值是一个两位的数字。不过返回值不总是两位的,如果该值小于 10,则仅...原创 2018-07-28 15:07:33 · 324 阅读 · 0 评论 -
js使用两个栈实现队列
function Quene(){ var stack1=[],stack2=[]; this.push=function(node){ stack1.push(node); } this.pop=function(){ if(stack2.length == 0){ if(stack1.length == 0){ return null; }else{ ...原创 2018-07-14 16:32:18 · 567 阅读 · 0 评论 -
JavaScript中解释/\s/g
str.replace(/\s/g,'%20')实现的功能是替换原来字符串的空格为%20 /[\s ]+/g正则表达式。/xxxx/两个斜杠表示这个是正则表达式。 后面的g表示匹配全部(即替换全部),[\s]表示匹配空白字符(空格等什么的),+号表示至少有一个。...原创 2018-07-14 15:52:26 · 5626 阅读 · 0 评论 -
JS中的Prototype
var dom = function(){ }; dom.Show = function(){ alert("Show Message"); }; dom.prototype.Display = function(){ alert("Property Message"); }; dom....原创 2018-07-11 21:52:33 · 1051 阅读 · 0 评论 -
JavaScript作用域
首先需要注意:JavaScript没有块作用域有全局作用域和函数作用域:function foo(){ var a=1;}foo();console.log(typeof a);//undefined在函数中为变量赋值的时候,需要分开赋值 :var a=1,b=1;否则,a=b=1时,后面的变量就成了全局作用域了function foo(){ var a=b=c=1;}f...原创 2018-07-11 19:53:59 · 99 阅读 · 0 评论 -
JavaScript严格模式和非严格模式区别
严格模式下,不允许使用with delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误; 非严格模式下,会静默失败并返回false严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会严格模式不允许八进制整数直接量(如:023)严格模式中,arguments对象是传入函数内实参列表的静态副本;...转载 2018-07-11 19:37:10 · 610 阅读 · 0 评论 -
JavaScript类型检测(常用三种实例分析)
考虑类型检测,首先我们先巩固一下JS的六种数据类型:1)原始类型:number、string、boolean、undefined、null (五种)2)对象:object( Function、Array、Date...)类型检测包括:typeof instanceof typeof (适合基本类型和函数,遇到null失效)要想判断一个数据具体是哪一种 object 的...原创 2018-07-11 17:34:31 · 453 阅读 · 0 评论 -
JavaScript进阶学习:闭包的写法和用途
什么是闭包闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点: 1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。 2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且...原创 2018-07-11 15:41:25 · 370 阅读 · 0 评论 -
在sublime text3里面直接运行js(调试控制台)
在sublime text3里面直接运行js,调试控制台使用Node.js添加js控制台1、先安装Node.js:https://nodejs.org/en/,安装sublime,具体可以参考https://blog.csdn.net/weixin_30363263/article/details/809470292、为sublime text3添加新的编译系统: Tools > Build...原创 2018-07-11 11:54:34 · 5713 阅读 · 1 评论 -
JSX学习(React)
JSX 是 JavaScript 语言的一种语法扩展,长得像 HTML,但并不是 HTML。React.js 可以用 JSX 来描述你的组件长什么样的。JSX 在编译的时候会变成相应的 JavaScript 对象描述。react-dom 负责把这个用来描述 UI 信息的 JavaScript 对象变成 DOM 元素,并且渲染到页面上。问:为什么不直接从 JSX 直接渲染构造 DOM 结构,而是要经...原创 2018-07-16 20:35:38 · 259 阅读 · 0 评论 -
JavaScript编码风格指南
JavaScript编码风格指南 转载自https://www.jb51.net/article/91353.htm前言:程序语言的编码风格对于一个长期维护的软件非常重要,特别是在团队协作中。如果一个团队使用统一规范的编码分风格,可以提高团队的协作水平和工作效率。编程风格指南的核心是基本的格式化规则,这些规则决定了如何编写高水准的代码。本指南来自于《编写可维护的JavaScript》这本书,基...转载 2018-07-10 15:14:55 · 401 阅读 · 0 评论 -
JavaScript中的相等
ECMAScript提供了两组操作符 1. 相等和不相等(‘==’ ,’!=’)特点:先转换再比较 2.全等和不全等(’===’ , ‘!==’)特点:仅比较而不转换根据ECMAScript规范:null 和 undefined是相等的 null == undefined //truenull === undefined //false相同数据类型比较规则: ==:如果两个操作数相等,返回tru...原创 2018-07-09 17:07:17 · 314 阅读 · 0 评论 -
JavaScript学习(两种事件触发)
我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码:onclick=JavaScriptHTML 事件的例子:当用户点击鼠标时当网页已加载时当图像已加载时当鼠标移动到元素上时当输入字段被改变时当提交 HTML 表单时当用户触发按键时HTML 事件属性如需向 HTML 元...原创 2018-07-06 19:42:26 · 332 阅读 · 0 评论 -
JS的事件冒泡和事件捕获
彻底弄懂JS的事件冒泡和事件捕获 转载自: https://www.cnblogs.com/qq9694526/p/5653728.html先上结论:他们是描述事件触发时序问题的术语。事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,...转载 2018-07-06 19:45:25 · 1226 阅读 · 0 评论 -
JavaScript异步进化史
转载地址:https://segmentfault.com/a/1190000006138882#articleHeader0同步与异步通常,代码是由上往下依次执行的。如果有多个任务,就必需排队,前一个任务完成,后一个任务才会执行。这种执行模式称之为: 同步(synchronous) 。新手容易把计算机用语中的同步,和日常用语中的同步弄混淆。如,“把文件同步到云端”中的同步,指的是“使...保持一...转载 2018-07-14 15:31:34 · 198 阅读 · 0 评论 -
js中apply和Math.max()函数的使用分析
var arr = [1,4,5,2,9];console.log(Math.max.apply(null,arr));这里输出9,这里做出简单的解释:Math.max()方法,支持传递多个参数,比如:Math.max(1,4,5,2,9) 但是它不支持直接传递一个数组作为参数,比如:Math.max(new Array(1,4,5,2,9))。Function.apply()是JS的一个OOP...原创 2018-07-14 11:27:22 · 2516 阅读 · 0 评论 -
一个例子看懂JavaScript的短路现象
var a=4399<0 ||typeof(4399+'');console.log(a);var a=4399>0 ||typeof(4399+'');console.log(a);结果为:stringtrue[Finished in 0.2s] 原因://短路或 如果第一项是true 则结果为true 如果第一项为false 结果 为第二项(第二项不做计算直接返回)。...原创 2018-07-14 11:09:37 · 1001 阅读 · 0 评论 -
一个例子看懂JavaScript的forEach
var arr=[{a:1},{}];arr.forEach(function(item,idx){ item.b=idx;}); console.log(arr);这段代码执行后arr的值为:[ { a: 1, b: 0 }, { b: 1 } ][Finished in 0.3s]这是为啥呢?arr.forEach(a,b,c)这个函数用于数组的遍历,其中三个参数abc意义如下...原创 2018-07-14 11:01:25 · 753 阅读 · 0 评论 -
JavaScript实现二叉树遍历、查询、删除
JavaScript实现数据结构可以提高我们的效率,本文介绍JavaScript实现二叉树的遍历。二叉树中序、前序、后序遍历大家应该了解,指的是根节点遍历的顺序首先我们建立一个二叉查找树(二叉排序树),从开始节点作为根节点,对其遍历插入,具体代码如下:function BinaryTree(){ var Node = function(key) { this.key = key;...原创 2018-07-13 21:05:10 · 869 阅读 · 2 评论