無標題文檔

Array.prototype 的泛型应用

在开始这篇文章之前,按照「惯例」我们先来道题目( 出处 )。

题目

请说明下面语句的输出:

x = {shift:[].shift};
x.shift();
console.info(x.length);

如果你回答正确,那么说明你已经了解 Array 函数的泛型应用。在理解这到题目之前,我 我们首先要了解数组(Array)的 shift 定义。

MDC 中已经对相关的说明 描述得非常的清楚

shift is intentionally generic; this method can be called or 
applied to objects resembling arrays. Objects which do not 
contain a length property reflecting the last in a series of 
consecutive, zero-based numerical properties may not behave 
in any meaningful manner.

同时,EMCAScript 中的定义也同时定义了对于 shift 操作对于对象 length 属性的改变, 那么基本上我们可以了解到上题中的答案为

0

扩散思维

如果对于上面的题目还无法理解,那么我们更清楚的说明 Array.prototype.shift 对对象 的 length 的影响。

x = {};
Array.prototype.shift.call(x);
console.info(x.length);

很明显,对于对象如果为定义 length 属性,则 shift 则会自动加上 length 属性并设置 为 0

既然已经说到这里,那么下面的题目输出什么留给大家去思考。

x = function (a, b, c) {};
Array.prototype.shift.call(x);
console.info(x.length);

重新认识泛型

很明显,上面的题目有可能还是无法说明本篇文章的题目。泛型(Generic)应用其实 期前也说明过 ,但这里主要说明 Array 方法 对于「类数组」的操作使用。

强制转换为数组

var args = Array.prototype.slice.call(arguments);

这个用法比较火星,其实期前也用过, 详细参见这里

迭代数据

Array.prototype.forEach.call(arguments, function(i) {
    console.info(i);
});

如果对象能够被递归,则出了「传统」的 for、while 等语句以外,还可以考虑使用 Array 的 forEach 属性(注意 IE 会是悲剧)。 Array 的 forEach 方法详见这里

其他的 Array 扩展用法可以散发自己的思维,如果对应浏览器的 Array 没有对应的实现方 法, 可以参见这里

其实,不仅仅是 Array 方法,很多浏览器原生对象的方法都是泛型,我们完全可以利用这 这些特性

  1. 使代码更为的清晰
  2. 使用原生方法,效率更高。

-- EOF --

推荐 VimWiki

作为技术人员,对于知识的管理、沉淀尤其的重要。 我说过我们生活在知识爆炸的年代 ,浮躁的我们往往迷失在浩如烟海的知识中。 Yibie Blog 上的文章 《我什么使用 OneNote》 很有共鸣,在这里分享下我的经验和看法。

需求

知识管理的一条途径就是做笔记。笔记类的软件有很多,这些工具在深度使用以后粘性很大,以后想再转其他同类型的工具,往往成本很大。细想之下,我是个挑剔的人,所以我对此类软件有下面的要求:

  • 快速记录,软件本身要小巧启动快速。当灵感来的时候,空着双手等着软件启动完毕,这很尴尬。
  • 方便记录,关注内容。我是个懒人,我希望关注于内容本身而非排版。
  • 转换、导出方便。我总想自己控制得多些,因此我想以后可以利用本人的技术二次处理这些数据。
  • 快速分享,知识可能不仅仅是你个人的,有时候你总希望分享给其他人。
  • 满足习惯,这是很主观的事情,根据自己的习惯总不想在新东西方面花上更多的心思。

Why VimWiki

https://friable.rocks/_/2010_04_12/1271087021.png

其实对于使用 Vim 的朋友来说,用 Vim 写 Wiki 并不是件新鲜的事情。如标题所说,VimWiki 可能本身并不是非常的强大,但配合各种工具后,你甚至完全可以考虑扩展它的功能。

对比上面的需求,之所以选择 VimWiki 是因为

  • 谁都知道 Vim 启动快,而 VimWiki 只是 Vim 的脚本而已
  • VimWiki 说白了是「个人 Wiki」,因此内容的组织方式完全由你自己而定
  • VimWiki 产出的是文本文件,因此你可以使用任何你熟悉的技术转换成任何格式的输出
  • 再没有比 HTML 文档更能方便分享的了,VimWiki 的输出就是 HTML 文件,你甚至可以利用它创建 Blog
  • 对于我而言,每天使用 Vim,因此 VimWiki 完全满足我的习惯

「在云端」

有关 VimWiki 的安装和配置, 善用佳软已经有很详实的文档 ,这里就不再复述了。这里我说说配合 Dropbox 、rsync 等同步软件打造「云间」的个人记录工具。

https://friable.rocks/_/2010_03_20/1269096655.png

一图胜千言,上面的简图主要说明了我如何同步 VimWiki 。篇幅的关系,有关此技巧的更多信息, 参见这里

@TODO

处于 VimWiki 的高可定制性,个人对于二次开发 VimWiki 有很浓厚的兴趣。我想近期能够为它做的事情

  • 美观的 VimWiki 模板
  • iPod Touch 阅读支持(其实也就是另外个模板) 在这里下载 http://is.gd/bsndw , 而且使用 Syntaxhighlighter 有点大材小用)

最后,其实说到底像 VimWiki 这类的知识管理工具,还是要自己深度去利用。为了避免陷入软件的争论战,先写到这里。

-- EOF --

控制 22 分钟的会议时间(翻译整理)

「会议拉锯战」是每个人都头痛的。如何高效的进行会议,相信每个人都希望了解。那么或许 这篇文章 可能给大家有所启发。

-- Split --

没有人因任何的因素喜欢开会。其实很多情况下,大部分的人都认为一些的会议都是在浪费时间。

那么,如何剔除会议中那些浪费时间的方面,留下精华部分?

让我们尝试下将会议时间压缩到 22 分钟,Nicole 首先提出了这个想法,我个人认为这是目前所能看到的最容易做到而且有效的办法。

这里是他提及的一些方面:

https://friable.rocks/_/2010_03_31/1270028282.png

请原谅我可能没有完全清楚得阐述他的核心观点,因为这些内容我是从他的想法中部分摘记而来。其中每条详细的观点如下:

制定 22 分钟时间的会议

谁规定所有的会议时间需要花半个小时甚至一个小时?这有何数据依据?当然没有。

其实,这点时间留给人们去阐述、辩论自己的观点显然不足够。因此反过来讲,也不可能所有的会议在 22 分钟之内搞定。

但你可以尝试尽可能将会议时间控制得越来越短,而不是越来越长。

有个共同的议程

有个明确目标的议程将会使会议锦上添花、有的放矢。

可以考虑在白板上写出议程的内容,同时加粗相应的关键点,由此不断提醒大家我们这个会议需要达到什么样的目标。

提前 3 天发送邀请和相关必读内容

虽然这可能是会议组织者的负担,但这能为组员降低尽可能小的成本。

千万不要让会议变成「大家尽可能得先了解文档中的内容,然后必须提交相应的作业」等这种情况。

准时开始

会议准时开始的这种情况发生的几率有多少?该死,实际情况是几乎没有。

你可能会说,部分的情况可能是由于 Outlook 等程序可能没有设置足够的提醒时间的问题。当然纯粹依靠软件是不靠谱的,甚至我建议你可以使用便签等「土办法」。

同时 22 分钟的时间对于个人而言,也可以当作是做个缓冲休息时间。

站着开会

舒适的椅子会让人「变懒」,而同时站着开会能提醒大家目标是不是需要说明或者补充(参见 「混乱的站立会议」 )。

同时,你需要保持你的观点,如有必要请保持沉默,将它留到会议外去单独处理。

不要带笔记本,但记得带纸笔

如果你承诺会议会在 22 中之内搞定,那么就没有必要带其他无关的物品。

我甚至认为带上这些东西你将重复你中学时的覆辙 -- 看起来你在开会,而其实你的心已经飞往他处。

纸和笔会让你的头脑清醒,也有利于分工:一个人讨论问题,另外一个人记录。

同时禁止带手机

理由同上

注意!记录所有的话题相关的反馈

如果是个会议,那必定有个人会担当组织者的角色,记录所有应该注意的点。

同时,反馈中可能会有支线等情况发生,你应该避免这些话题不会离会议本身的议题太远。

尽可能快的发送会议记录

22 分钟并不长,但你应该尽可能快的发送相关的会议记录,组织并计划下个会议。

好了,我想你有更多补充这个话题的观点,那么也请你不吝的提出。如果你愿意,你完全可以和其他人分享这个话题。

-- EOF --

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章