某人

此前素未谋面、此后遥遥无期

0%

Promises

Promise 表示一个异步操作的最终结果,与之进行交互的方式主要是 then 方法,该方法注册了两个回调函数,用于接收 promise 的终值或本 promise 不能执行的原因。

一个 Promise有以下几种状态:

  • pending: 初始状态,既不是成功,也不是失败状态。
  • fulfilled: 意味着操作成功完成。
  • rejected: 意味着操作失败。
  1. Promise 本质是一个状态机。每个 promise 只能是 3 种状态中的一种:pending、fulfilledrejected。状态转变只能是 pending -> fulfilled 或者 pending -> rejected。状态转变不可逆。
  2. then 方法可以被同一个 promise 调用多次。
  3. then 方法必须返回一个 promise 。规范里没有明确说明返回一个新的 promise 还是复用老的 promise(即 return this),大多数实现都是返回一个新的 promise ,而且复用老的 promise 可能改变内部状态,这与规范也是相违背的。
  4. 值穿透(上一个promise传递过来的值,经由这个then方法的时候不做任何处理,而是交给再下个then方法去处理)。
阅读全文 »

原型链

JavaScript主要通过原型链实现继承。原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的

内部指针__proto__

  1. 遵循ECMAScript标准,someObject.[[Prototype]] 符号是用于指向 someObject的原型;
  2. 这个等同于 JavaScript 的非标准但许多浏览器实现的属性 __proto__;
  3. 从 ECMAScript 6 开始,[[Prototype]] 可以通过Object.getPrototypeOf()Object.setPrototypeOf()访问器来访问;
  4. 但它不应该与构造函数 funcprototype 属性相混淆
  5. 被构造函数创建的实例对象的 [[prototype]] 指向 funcprototype 属性。
  6. Object.prototype 属性表示Object的原型对象。
阅读全文 »

MVVM

MVVM是Model-View-ViewModel 的简写,是MVC的改进版.

在双向绑定中,Model和View之间没有耦合,通过操作Model,利用ViewModel提供的机制,自动实现ViewModel的更新。

阅读全文 »

方案一:

使用inline-block与伪类

1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
*{margin:0;padding:0;}
.g-popup-wrap{display:block;position:fixed;top:0;left:0;width:100%;height:100%;z-index:1501;text-align: center;}
.g-popup-box{border:1px solid #ddd;background-color:#fff;display:inline-block;vertical-align:middle;text-align:left;color:#333;position:relative;}
.g-popup-wrap:after{content: " ";width: 0;height: 100%;display: inline-block;vertical-align: middle;}
</style>
<div class="g-popup-wrap">
<div class="g-popup-box">

<p style="text-align: center;padding:30px 100px;">测试数据</p>

</div>
</div>
阅读全文 »

两列左侧定宽,右侧自适应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
*{margin:0;padding:0;}
html,body{height:100%;}
.wrap{overflow:hidden;height:100%;}

.aside{float:left;width:200px;border:1px solid blue;height:100%;position:relative;margin-right:-100%;}
.main{float:right;width:100%;height:100%;}
.main-container{margin-left:210px;height:100%;border:1px solid red;}
</style>
<div class="wrap">
<aside class="aside">
aside
</aside>
<section class="main">
<article class="main-container">main</article>
</section>
</div>
阅读全文 »

OSI

OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

为开放式互连信息系统提供了一种功能结构的框架。它从高到低分别是:应用层、表示层、会话层、传输层、网络层、数链路层、物理层

image

阅读全文 »

Function.prototype.apply()

apply() 方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。

语法:

1
fun.apply(thisArg, [argsArray])
阅读全文 »

angularjs双向绑定

双向绑定:界面的操作能实时反映到数据,数据的改变能实时反映界面,如下图:文本框的操作

image

阅读全文 »

yarn

yarn 是由Facebook、Google、Exponent 和 Tilde 联合推出的 JS 包管理工具

弥补 npm 的一些缺陷

  • npm 安装包(packages)的速度不够快,拉取的 packages 可能版本不同
  • npm 允许在安装 packages 时执行代码,这就埋下了安全隐患
阅读全文 »