javascript
Muqiu7890
守住繁华
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深浅拷贝
浅拷贝浅拷贝是拷贝引用(拷贝地址),仍指向同一个地址,所以其中一方改变数据,另一方也会跟着改变实现方式对象Object.assign()Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。Object.assign()复制的对象第一层是深拷贝,第二层及以后每层都是浅拷贝let obj1 = { na...原创 2019-08-20 23:05:51 · 150 阅读 · 0 评论 -
call, apply, bind 区别
call 和 apply 都是为了解决改变 this 的指向。作用都是相同的,只是传参的方式不同。除了第一个参数外,call 可以接收一个参数列表,apply 只接受一个参数数组let a = { value: 1}function getValue(name, age) { console.log(name) console.log(age) conso...原创 2019-09-01 00:40:41 · 153 阅读 · 0 评论 -
正则表达式--replace
MDN解释: 返回一个由替换值替换一些或所有匹配的模式后的新字符串。使用以下值作为替换参数序列变量名代表的值1$$插入一个 “$”2$&插入匹配的子串3$`插入当前匹配的子串左边的内容4$’插入当前匹配的子串右边的内容5$n假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括...转载 2019-08-18 14:02:00 · 8669 阅读 · 1 评论 -
跨域
跨域的方法有哪些?原理是什么?知其然知其所以然,在说跨域方法之前,我们先了解下什么叫跨域,浏览器有同源策略,只有当“协议”、“域名”、“端口号”都相同时,才能称之为是同源,其中有一个不同,即是跨域。那么同源策略的作用是什么呢?如果没有同源策略,不同源的数据和资源(如HTTP头、Cookie、DOM、localStorage等)就能相互随意访问,根本没有隐私和安全可言。为了安全起见和资...原创 2019-08-26 10:39:46 · 155 阅读 · 0 评论 -
new&&instance
new/* new操作符原理: 1. 创建一个对象 2. 链接到原型, 3. 绑定this 4. 返回新对象*/// 第一个参数为构造函数名称 其余参数为给该构造函数传递的参数function _new() { let obj = {} // 获取构造函数 let Con = [].shift.call(arguments) // 链接到原型...原创 2019-08-26 20:12:40 · 169 阅读 · 0 评论 -
强缓存和协商缓存
强缓存不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的network选项中可以看到该请求返回200的状态码,并且size显示from disk cache或from memory cacheExpires : response header里的过期时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存。它的值为一个绝对时间的GMT格式的时间字符串, 比如Expires...原创 2019-08-26 15:06:57 · 253 阅读 · 0 评论 -
防抖|节流
防抖(debounce): n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间原理:第一次调用函数,创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器并设置另一个。如果前一个定时器已经执行过了,这个操作就没有任何意义。然而,如果前一个定时器尚未执行,其实就是将其替换为一个新的定时器,然后延迟一定时间再执行。并且使用一个布尔值( im...原创 2019-09-02 13:33:40 · 156 阅读 · 0 评论 -
es6总结
新增块级作用域(let/const)let / const / var 区别声明方式变量提升暂时性死区重复声明初始值作用域var允许不存在允许不需要除块级let不允许存在不允许不需要块级const不允许存在不允许需要块级1.let 和 const 定义的变量在定义语句之前,如果使用会抛出错误(形成了暂时性死区),而...原创 2019-09-03 16:18:26 · 162 阅读 · 0 评论 -
Promise
Promise 是异步编程的一种解决方案。它解决了ajax请求过程中回调地狱的问题,令代码更具有可读性。Promise对象是一个构造函数,用来生成Promise实例。const promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value)...原创 2019-09-05 00:45:51 · 253 阅读 · 0 评论 -
前端应注意的SEO
合理的 title、description、keywords:搜索对着三项的权重逐个减小,title 值强调重点即可,重要关键词出现不要超过 2 次,而且要靠前,不同页面 title 要有所不同;description 把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面 description 有所不同;keywords 列举出重要关键词即可语义化的 HTML 代码,符合 W3C 规范...原创 2019-09-22 14:47:31 · 209 阅读 · 0 评论 -
闭包
闭包是指有权访问另外一个函数作用域中的变量的函数创建闭包的方式在一个函数内部创建另一函数function func(){ var a = 1,b = 2; function closure(){ return a+b; } return closure;}闭包的作用域链包含着它自己的作用域,以及包含它的函数的作用域和全局作用域应用场景创建私有...原创 2019-08-20 10:25:57 · 688 阅读 · 0 评论 -
原型链
原型在 JavaScript 中,每个构造函数都有一个prototype 属性,这个属性指向函数的原型对象(原型)。使用原型对象的好处是所有对象实例共享它所包含的属性和方法。什么是原型链?原型链解决的主要是继承问题。每个对象拥有一个原型对象,通过__ proto__ ([[Prototype]]) 指针指向创建该对象的构造函数的原型,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一...原创 2019-08-14 11:13:17 · 144 阅读 · 0 评论 -
super关键字
super关键字用于访问和调用一个父对象上的函数。在构造函数中使用时,super必须放在this之前,否则,会报错。1.在类中使用superclass Polygon { constructor(height, width) { this.name = 'Polygon'; this.height = height; this.widt...原创 2018-11-28 17:34:07 · 183 阅读 · 0 评论 -
js--回调函数
今天碰到一个问题,如何获取一个函数异步操作的结果?答:用回调函数。看下面这个例子:function fn () { setTimeout(function () { // 如何拿到这里的 data const data = 123 //console.log(data) unde }, 1000)}用回调函数来取data的值function fn (...原创 2018-12-03 19:36:33 · 167 阅读 · 0 评论 -
表单同步提交与异步提交
同步提交<form id="register_form" method="post" action="/register"> <div class="form-group"> <label for="email">邮箱</label> <i原创 2018-12-09 15:02:44 · 2499 阅读 · 0 评论 -
js创建对象的方法总结
1. 对象字面量方式var person = { name: "XiaoMing", age: 29, job: "Software Engineer", sayName: function () { alert(this.name) }2.object构造函数var person = new Object();person.name = "X...原创 2019-04-22 12:56:15 · 3188 阅读 · 0 评论 -
js继承
1. 组合继承原理:将原型链和借用构造函数的技术组合在一起。使用原型链实现对原型属性和方法的继承,使用借用构造函数实现对实例属性的继承。function SuperType(name){ this.name = name; this.colors = ["red", "blue", "green"];}SuperType.prototype.sayName = function()...原创 2019-04-23 01:09:50 · 169 阅读 · 0 评论 -
js调试方法总结
好的调试方法会大大提高debug的速率。在js中,开发人员调试时最常用的方式即为console.log(),但是不免存在局限性。接下来总结几种常用的调试方法:alertalert是比较常用的debug方式,但是alert最大的局限性–只能打印字符串。如果显示内容不为字符串,alert会调用toString()方法将该对象转化为字符串(eg:[object object],其具体内容并不会显...原创 2019-06-18 16:14:15 · 4212 阅读 · 0 评论 -
this
this代表的是当前行为执行的主体,它实际上在函数被调用时发生的绑定,他指向什么完全取决于函数在哪被绑定一。关于this函数执行时首先看函数名前面是否有".",有的话,"."前面是谁,this就是谁;没有的话this就是windowfunction fun() { console.log('this',this) } obj = {fun} fun...原创 2019-07-24 23:49:23 · 263 阅读 · 0 评论 -
事件循环
JavaScript一门是单线程的脚本语言,为什么说它是单线程的呢?作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它是单线程,否则会带来很复杂的同步问题。举个列子,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?所以,为了避免复杂性,从一诞生,JavaScript就是单线...原创 2019-08-01 01:02:32 · 290 阅读 · 0 评论 -
设计模式
工厂模式工厂模式提供一个通用的接口来创建对象。 class Student { constructor(name, subjects) { this.name = name; // ... // 如果是文科生:['政治', '历史', '地理'] // 如果是理科生:['...原创 2019-08-06 18:27:46 · 140 阅读 · 0 评论 -
正则表达式
字符含义举例^匹配输入的开始/^A/ 并不会匹配 “an A” 中的 ‘A’,但是会匹配 “An E” 中的 ‘A’。$匹配输入的结束/t$/ 并不会匹配 “eater” 中的 ‘t’,但是会匹配 “eat” 中的 ‘t’*匹配前一个表达式0次或多次,等价于 {0,}/bo*/ 会匹配 “A ghost boooooed” 中的 ‘booooo’ 和 ...原创 2019-08-18 23:38:12 · 142 阅读 · 0 评论 -
js遍历方法比较
一。最原始的for循环let myArray = ['a','b','c'];for(var index = 0; index < myArray.length; index++) { console.log(index,myArray[index]);} // 0 "a"// 1 "b"// 2 "c"二。forEach上面写法较为麻烦,所以数组提供了forEa...原创 2018-11-27 23:49:14 · 218 阅读 · 0 评论
分享