js
摇摇马骑骑
要解放生产力就得用工具,架构不是一蹴而就的,而是一个不断迭代的过程,每跨过一个坑、每解决一个痛点痒点,都能使架构更加健壮。
展开
-
jsonp
一、JSONP的诞生 首先,因为ajax无法跨域,然后开发者就有所思考 其次,开发者发现, 标签的src属性是可以跨域的 把跨域服务器写成 调用本地的函数 ,回调数据回来不就好了? json刚好被js支持(object) 调用跨域服务器上动态生成的js格式文件(不管是什么类型的地址,最终生成的返回值都是一段js代码) 这种获取远程数据的方式看起来非常像ajax,转载 2017-12-14 09:32:48 · 220 阅读 · 0 评论 -
this从溺爱到‘失宠’ (二)
嗨!欢迎来到让我们一起解决“this”难题的第二部分,我们试图揭开 JavaScript 中最难让人理解的一部分内容 - “this”关键字的神秘面纱。如果您还没有读过 第一部分,你需要先把它读一下。在第一部分中,我们通过 15 个示例介绍了默认绑定规则和隐式绑定规则。我们了解了函数内部的“this”如何随着函数调用方式的不同而发生改变。最后,我们也介绍了箭头函数以及它是如何进行词法绑定。我希望你...转载 2018-08-07 16:10:03 · 143 阅读 · 0 评论 -
this从溺爱到‘失宠’
Example #1 function foo() { console.log(this); bar(); } function bar() { console.log(this); baz(); } function baz() { console.log(this); } foo(); 复制代码 你被难住了吗?为了测试,你当然可以把这...转载 2018-08-07 13:47:01 · 142 阅读 · 0 评论 -
JavaScript中的深拷贝和浅拷贝
在说深拷贝与浅拷贝前,我们先看两个简单的案例: //案例1 var num1 = 1, num2 = num1; console.log(num1) //1 console.log(num2) //1 num2 = 2; //修改num2 console.log(num1) //1 console.log(num2) //2 //案例2 var obj1 = {x: 1, y: 2}, o...转载 2018-08-10 14:41:51 · 179 阅读 · 0 评论 -
JavaScript设计模式与实践--工厂模式
1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为:简单工厂,工厂方法和抽象工厂。 如果只接触过JavaScript这门语言的的人可能会对抽象这个词的概念有点模糊,因为JavaScript一直将abstract作为保留字而没有去实现它。如果不能很好的...转载 2018-08-10 13:39:51 · 479 阅读 · 1 评论 -
JavaScript运行机制:event-loop
JavaScript运行机制:event-loop 我们从javascript的单线程->任务队列->事件和回调函数->事件环,一步一步讲解javascript的执行机制。 一、JavaScript是单线程 JavaScript语言的特点是单线程,同一时间只能做一件事,JavaScript之所以是单线程,跟他的用途有关,作为浏览器脚本语言,JavaSc...转载 2018-08-10 09:45:09 · 174 阅读 · 0 评论 -
Event Loop小计
我们都知道JavaScript是单线程的,也就是说同一时间只能干一件事。这是因为JavaScript主要是用来操作DOM的,如果变成多线程,浏览器就懵逼了,不知道该听谁的了。但是虽然js是单线程,但是完全可以模拟多线程,靠的就是Event Loop。 我们都知道js中的代码分 同步 和 异步,所谓的 异步 其实就是不会阻塞我们的主线程,等待主线程的代码执行完毕才会执行。callback setT...转载 2018-08-09 09:16:47 · 179 阅读 · 0 评论 -
Event loop 机制简介
堆、栈、队列 堆 堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。 ...转载 2018-07-26 11:03:28 · 377 阅读 · 0 评论 -
es6 继承
1. 关于class的本质 定义一个类 class Person{ constructor(skin,language){ this.skin=skin; this.language=language; } say(){ console.log('I am a Person') } } 由于class本质还是...转载 2018-07-26 10:42:52 · 625 阅读 · 0 评论 -
js继承,这次把你吃透
类 我们来回顾一下ES6 / TypeScript / ES5类的写法以作对比。首先,我们创建一个GithubUser类,它拥有一个login方法,和一个静态方法getPublicServices, 用于获取public的方法列表: class GithubUser { static getPublicServices() { return ['login'] ...转载 2018-07-26 10:40:22 · 6435 阅读 · 3 评论 -
JS 中可以提升幸福度的小技巧
1. 类型强制转换 1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为NaN,或者使用 a !== a 来判断是否为NaN,因为 NaN !== NaN '32' * 1 // 32 'ds' * 1 // NaN null * 1 /...转载 2018-07-24 11:44:25 · 143 阅读 · 0 评论 -
理解的闭包
闭包是js中一个晦涩难懂的一个概念,网上关于闭包的文章也是抓一大把,每个人的文章却又不尽相同,或者说,每个人的理解都不一样。 什么是闭包 阮一峰老师的一篇文章中说:闭包就是能够读取其他函数内部变量的函数。可以把闭包简单理解成”定义在一个函数内部的函数”。 在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 这个解释不能说错,但觉得有点片面。阮老师是从函数内部变量的角度去看闭包。 也...转载 2018-10-18 23:39:23 · 201 阅读 · 0 评论