杂货铺


  • 首页

  • 归档

  • 标签

  • 搜索

观察者模式实例详解

发表于 2017-05-16 | | 阅读次数
字数统计 744 | 阅读时长 3

观察者模式又名发布-订阅者模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,自动刷新状态。
观察者模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。

角色:

  • 观察者(订阅者)
    接口或抽象类。当被观察者状态发生变化时,会得到通知
  • 被观察者(发布者 或者 主题)
    当需要被观察的状态发生改变时,需要通知队列中的所有观察者对象。
    需要维持(添加,删除,通知)一个观察者对象列表

观察者模式案例

步骤:

1. 提供一个发布者(负责信息发布)
2. 提供观察者(信息发布后需要采取行动的对象)
3. 注册观察者(将观察者注册到发布者的客户列表)
4. 发布者发布信息(事件触发)
阅读全文 »

HTTP状态码

发表于 2017-05-06 | | 阅读次数
字数统计 1,200 | 阅读时长 4

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。

状态码如 200 OK,以3位数字和原因短语组成。
数字中的第一位指定了响应类别,后两位无分类。
状态码的类别

阅读全文 »

Node.js 常用接口

发表于 2017-04-29 | | 阅读次数
字数统计 1,085 | 阅读时长 5

Node.js 就是运行在服务端的 JavaScript 。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、异步(非阻塞式)I/O、单线程模型。轻量又高效。

http

创建服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//导入http模块中的功能
const http = require('http');
//2. 创建http服务
const server = http.craeteServer(function(request, response)) {
//request -> 请求,客服端发送给服务器的
//response -> 响应,服务器对客户端的响应
//告诉客户端响应完成
response.end(); //必须,有且只有一个
});
//3. 启动服务
/*
*参数1. 端口
*参数2. 监听的ip地址
*参数3. 回调 ->当服务器成功启动执行回调
*/
server.listen(80, '127.0.0.1', function(){
console.log('服务器成功创建并启动监听');
})
阅读全文 »

作用域

发表于 2017-04-22 | | 阅读次数
字数统计 1,106 | 阅读时长 4

作用域直白的意思的作用范围。

块级作用域:{ 与}之间的称为块级作用域。在Java与C语言中有块级作用域,而JavaScript中没有块级作用域。

词法作用域

JavaScript中采用的是词法作用域。在代码编写过程中,不需要运行,变量的作用域就已经确定。

动态作用域:变量的作用域取决于当时的执行环境。

词法作用域的规则

  • 词法作用域中的访问原则——就近原则
    首先在当前作用域中查找,如果没有就去上一级的作用域中查找,直到全局作用域,如果都没有返回undefined或者报错(函数)。
    注意:外层作用域不能访问内层作用域。

  • 只有函数才能限定作用域范围,函数内允许访问函数外的数据。

    1
    2
    3
    4
    5
    6
    var a = 10;
    function fun() {
    console.log(a); //10
    var b = 1;
    }
    console.log(b); //undefined
  • 变量提升

阅读全文 »

HTTP 协议与报文

发表于 2017-04-15 | | 阅读次数
字数统计 2,388 | 阅读时长 8

HTTP协议

HTTP 协议与 TCP/IP 协议一样,用于客户端和服务端之间的通信。

HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。

HTTP发送请求

阅读全文 »

面向对象继承方法

发表于 2017-04-06 | | 阅读次数
字数统计 2,238 | 阅读时长 9

继承的概念:通过一定的方式实现让某个类型A获取另外一个类型B的属性和方法。其中类型A称为子类型,类型B称为父类型或超类型。

JavaScript中的继承:Object是所有对象的父类型,所有Javascript中的对象都是直接或间接继承自Object。

继承有两种方式:接口继承和实现继承,在JS中只支持实现继承,实现继承主要依赖原型链来完成。

说明:其他语言中继承通常通过类来实现,JS中没有类的概念(ES6新增了class)。JS中的继承是某个对象继承继承另外一个对象,是基于对象的。

1. 属性拷贝(混入式继承)

属性拷贝是浅拷贝,复制引用类型时,只会复制地址,两者会共享同一数据,修改一个会影响另外一个。

1
2
3
4
5
6
7
8
9
10
11
12
var obj1 = {
name : '小明',
age : 20,
friends : ['小红', '小智']
};
var obj2 = {};
//obj2继承obj1的属性
for (var k in obj1) {
obj2[k] = obj1[k]; //遍历复制属性
}
obj2.friends.push('小王'); //为子对象添加一个属性
//obj1的friends里也会被增加一个小王

阅读全文 »

原型链图解

发表于 2017-03-31 | | 阅读次数
字数统计 364 | 阅读时长 1

原型链的结构

原型链结构图

  1. 每一个对象都是由构造函数创建出来的。
  2. 每一个构造函数都有对应的原型对象。
  3. 原型对象也是一个对象,所以原型对象也是由构造函数创建出来的。
  4. 以上,形成原型链。
    阅读全文 »

Object 的静态成员

发表于 2017-03-25 | | 阅读次数
字数统计 576 | 阅读时长 2

静态成员:构造函数对象自己的属性和方法
实例成员:直接定义在实例上的属性和方法
原型成员:直接定义在原型对象上的属性和方法

所有对象都是Object的实例,所以可以访问Object的静态成员

  • Object.toString:返回对象的字符串描述信息
    • object类型返回[object Object]
    • 函数、数组类型返回字符串形式
    • Number类型可调用该方法,传递参数,表示转换进制
  • Object.apply/call:调用其他对象的方法
  • Object.arguments:接收存储函数的实参
  • Object.assign:属性拷贝
  • Object.caller:返回一个函数的引用,这个函数调用了当前的函数;另外callee放回正在执行的函数本身的引用,它是arguments的一个属性,常用于递归函数。
    阅读全文 »

Web与网络基础

发表于 2017-03-12 | | 阅读次数
字数统计 1,949 | 阅读时长 7

Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。可以说,Web是建立在HTTP协议上通信的。

3项WWW构建技术,分别是:作为页面的文本标记语言的HTML;作为文档传递协议的HTTP;指定文档所在地址的URL。

通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。

互联网协议族

阅读全文 »

构造函数与原型对象

发表于 2017-03-01 | | 阅读次数
字数统计 1,842 | 阅读时长 7

构造函数

函数也可以作为构造函数的参数

  • 构造函数和工厂函数的区别:

    1. 构造函数首字母大写
    2. 构造函数内部会默认创建新的对象,并且默认返回这个对象
    3. 在创建对象的时候,通过new调用构造函数
  • 返回值

    • 构造函数内部没有return,返回默认新创建的对象
    • 如果构造函数内部有return,分两种情况:

      1. 返回值类型,忽略该return,返回新创建的对象
      2. 返回值是引用类型的数据,会覆盖之前创建的对象,返回该引用类型数据的值
        1
        2
        3
        4
        5
        6
        7
        function Person(name, age) {
        this.name = name;
        this.age = age;
        //return 'test'; 会忽略该return
        //return {}; 返回该对象
        }
        var p1 = new Person('张三', 20);
  • 实例和实例化
    使用构造函数创建对象的过程称为实例化,创建出来的这个对象叫做该构造函数的实例。

    阅读全文 »
123
Shine Hwong

Shine Hwong

纸上得来终觉浅,绝知此事要躬行

25 日志
62 标签
GitHub
© 2017 Shine Hwong
由 Hexo 强力驱动
主题 - NexT.Pisces