一名热爱体感技术的
业余专业开发人员

开始写第一个JS小程序

真是,一天不吐槽js就不开心!

今天尝试写点js的程序,增加一种网络视频下载的方法,下载后丢给flv.js去显示。

之前的程序是跑在Node.js环境下的,然后就要改成浏览器看以用的脚本,瞎折腾了挺久时间,让我的三观再次受到打击!

首先原来的Node.js代码可以过require或者import去导入相关node_module下的库方法,然后我移植到浏览器发现都不行,原来那些类得通过babel之类的东西转换成es5下的代码(合并成一个文件),通过html的<script>加载后,会从window下得到这个类的定义。也就是说node.js开发的库的引用和python、c++一样,但是到浏览器端就完全不一样了。

但是也不得不说,所有功能最好在Node.js环境下开发调试好再进行浏览器的移植,不然每次编译/转换成ES5发现有bug,改下又得重新来一遍。

看别人的events模块用的真爽,各种.on(‘ready’, 匿名函数)处理得很开心,一到我这里就歇菜了。我在类中的open方法添加readableStream的ready、data等事件,然后发现想把数据存回到类里面,this竟然是undefined。虽然写在类里面,但是this竟然是不存在的!从c++转过来的我,无法理喻。只能通过很笨拙的方法,在类中新增一个fun方法,然后.on(‘data’, this.fun.bind(this)),然后这个fun里面使用this就有定义了。真是有点无语,本来不想写罗啰嗦嗦的,被逼无奈。

今天也看了下call和apply方法,只能赞叹js语法博大精深了。他的语法真难理解,特别是各种情况又得有不同的理解。难怪有这么多js相关的变种~

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址