周宇盛的博客 学习笔记 读书笔记

使用 this 和词法作用域解决问题的方法

无论用哪种方法,都记得先将数据初始化为 0

一、使用this

{0}. 使用全局变量 global 作为 this

global.count = 0;

function foo(num) {

  console.log("foo: " + num);
  
  this.count++;
}

for (var i= 0; i < 10; i++) {
  
  if (i > 5) {
  
    foo(i); //或者foo.call(null, i);
  
  }
  
}

console.log(global.count);
  • 另外创建对象 data 作为 this
var data = {
  
    count: 0

};

function foo(num) {

  console.log("foo: " + num);
  
  this.count++;
}

for (vari = 0; i < 10; i++) {
  
    if (i > 5) {
      
        foo.call(data, i);
      
    }
  
}

console.log(data.count);
  • 将函数自身作为 this
function foo(num) {

    console.log("foo: " + num);

    this.count++;

}

foo.count = 0;

for (var i = 0; i < 10; i++) {

    if (i > 5) {

        foo.call(foo, i);

    }

}

console.log(foo.count);

二、使用词法作用域

{0}. 另外创建对象

var data = {

    count: 0

};

function foo(num) {

    console.log("foo: " + num);

    data.count++;

}

for (var i = 0; i < 10; i++) {

    if (i > 5) {

        foo(i);

    }

}

console.log(data.count);

{0}. 另外创建变量

var count = 0;

function foo(num) {

    console.log("foo: " + num);

    count++;

}

for (var i = 0; i < 10; i++) {

    if (i > 5) {

        foo(i);

    }

}

console.log(count);

{0}. 将函数当做对象,添加属性

function foo(num) {

    console.log("foo: " + num);

    foo.count++;

}

foo.count = 0;

for (var i = 0; i < 10; i++) {

    if (i > 5) {

        foo(i);

    }

}

console.log(foo.count);

结合Git Docker进行部署

用 Gliffy 画了张图,大致展示部署流程,理清楚了其实还是比较简单的。

Docker 部署工作流

Presentation Online 技术构思

redux

actions

  • 微信登录、提交个人资料
  • 上传文件、打开文件、切换文件
  • 开始 online presentation、加入 online presentation
  • 微博、微信、朋友圈分享
  • 新建画板、删除画板
  • 打开话筒、打开摄像头、申请话筒权限

reducers

实现各 actions 的功能

  • 打开话筒:新建直播频道并进入新建的直播频道
  • 上传文件、打开文件:百度云DOC上传文件、阅读文件

store

在 reducers 的基础上创建 store

Provider

包裹 components,传递 store

container components

给 UI components 传递参数

UI components

渲染 UI,向上事件

Online Presentation技术选型

“云服务是基础设施”,我们应该用好它,降低金钱和人力成本。我们的主要任务是,策划商业模式,在云服务的基础上进行开发。

任务 技术
PPT 百度云文档服务 DOC,Office Online + WOPI
视频直播 阿里云视频直播
IM 网易云信野狗云
服务器 阿里云LeanCloud
实时画板 react-sketchpad
Data Management Redux, MongoDB

PPT

开发阶段和起步阶段:百度云文档服务 DOC

起步阶段后:Office Online + WOPI

IM

开发阶段:网易云信100个账号内免费,野狗云日活跃设备50个内免费

生产阶段:网易云信专业版 1800元/月起,野狗云日活跃设备200个内 49元/月

视频直播

开发阶段和起步阶段:乐视云体验版 15G/月免费

起步阶段后:阿里云音视频直播

实时画板

开发阶段和起步阶段:react-sketchpad

起步阶段后:draw 的实时性 + literallycanvas / fabric.js 的功能和界面

服务器

开发阶段:LeanCloud 的免费开发版

生产阶段:阿里云

Online Presentation 商业可行性分析

Online Presentation已有多个解决方案。Skype、QQ

而且在教育、办公领域都有作用。很多视频教程,画面只有PPT,如果用Online Presentation解决,可以减少对带宽的依赖,使得资源的扩散性更强。在汇报工作时,我们也完全可以用Online Presentation解决,而不需要非得面对面进行。

但用的人并不多。

为什么?

可能的原因:

  • 暂时还没有真正好用,功能丰富的解决方案
  • Online Presentation并没有深入群众,去最广大有需求的人群中,需要做 Online Presentation的人不用 QQ 和 Skype