- 响应式编程
- 响应式编程【Reactive Programming】
- 依赖事件? 回调?
- 在响应式编程里,按时间排列的事件,被称为“流”,stream。响应式中的事件序列类似于js的数组,它里面的事件流就是时间的序列
- 响应式编程依赖于事件,在js里事件是指异步
- 响应式编程,就是异步的数据流的开发
- 鼠标hover是流stream
- 监听数据、监听error、监听win事件。监听也叫“订阅”,监听这些事件的函数叫“观察者”,流stream即为“主体”。订阅+观察者即观察者模式。
- 响应式编程,一个数据的变化,它的影响可能是呈现网状扩散
- 特点
- 速度响应快,低延迟
- 健壮性弹性,有故障也能尽量响应
- 资源弹性,访问量大自动加资源,少了自动减
- 有消息自动传递
- 响应式的思想
- 实际是观察者模式+(stream与事件源的通信控制)
- 其具体实现有一个叫ReactiveX是一个基于一系列可观察的异步和基础事件编程组成的一个库
- 观察者模式
大体满足
- 松耦合的代码;
- 一对多的关系
- 主体状态变化时,所有依赖被通知
- 主体和观察者互不知晓
20171021
1.题目要求
使用 Prototype 来创建一个 Person 类,需要完成以下要求:
- 在构造函数 Person 的 prototype(原型) 上增加下面的共享属性:
- 在原型上增加属性 name 值为 'Jonny'
- 在原型上增加属性 friends 值为 ['Cover', 'Kevin']
- 在构造函数 Person 的原型上增加共享方法 sayHello
如下所示:
var person1 = new Person('Sugar');
var person2 = new Person('Cream');
console.log(person1.friends); // ['Cover', 'Kevin']
console.log(person2.friends); // ['Cover', 'Kevin']
console.log(person1.sayHello === person2.sayHello); // true
answer
- 通过构造函数生成实例对象时,会自动为实例对象分配原型对象。每一个构造函数都有一个 prototype 属性,这个属性就是实例对象的原型对象。
- 原型对象上的所有属性和方法,都能被派生对象共享。
- 因此本道题目,考察如何使用 prototype 来设置共享的方法,避免所有实例对象都设置相同的属性和方法导致对系统资源的浪费。
具体参考代码如下:
function Person(name){
}
// 设置原型
Person.prototype = {
constructor: Person,
name: 'Jonny',
friends: ['Cover', 'Kevin'],
sayHello: function() {
//...
}
};
- 需注意的是在上面的代码中,我们将 Person.prototype 设置为一个新创建的对象。会导致 Person.prototype 对象原来的 constructor 属性不再指向 Person, 这里可以像上面那样,特意的把 constructor 设置为 Person 。
网友评论