-
在ES5,对象的键(key)总是被解释为字符串。ES6允许我们使用计算的值作为对象的键,使用方括号:[myKey]const>chosenAnimal>=>'cat'
const>animals>=>{
>>[`animal${chosenAnimal}`]:>true,
}
console.log(animals.animalcat)>//>true如上animal${chosenAnimal}被动态解释成animalcat键。
这是一个很强大...
-
本文介绍JS函数式编程中的两个概念:柯里(Curry)和部分应用程序(Partial Application)。什么是应用程序(Application)将函数应用于其参数以产生返回值的过程。什么是部分应用程序将函数应用于某些参数的过程,该部分应用的函数被返回供后续使用。换句话说,就是一个函数,接收一个多参数函数作为其参数,并返回一个使...
-
和C++等语言类似,JS支持多范式(paradigms)编程。我们常常混合这些范式来完成一些大型Web项目。JS支持3种编程范式:命令式、面向对象和函数式。命令式(Imperative JavaScript)命令式就是简单的从上而下完成任务,流水账过程式编码风格:function>task(nums)>{
var>i,>sum=0,>squares>=>[];
for>(i=0;>i&nums.leng...
-
在JavaScript中用户交互的核心部分就是事件处理。本文为对事件模型和处理机制的总体性描述。Event是什么?
event是用户操作网页时发生的交互动作,比如click/move, event除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。Event模型是什么?
Event模型指的是浏览器如何处理发生的事件。不同的浏览器其...
-
JS的语言世界中函数(function)是一等公民,函数的调用有多种方法。普通调用这个是最常见和直接的方式:function>f(x)>{>>>>>>>>
>>>>console.log(x*x);
}
f(5);>//>25方法调用函数被定义为对象的方法,以对象方法的形式调用,如下:
var>c>=>{>>>>
>>>>v>:>0,>>>>
>>>>f>:>function(x)>{>>>>>>>>>>>>>>>>
>>>>>...
-
JavaScript闭包(Closure)是常见的JS面试题,是否理解闭包是一个简单的区分JS初级和高级程序员的判例。几乎每个JS程序员都在使用闭包,有意或无意间。比如编写一个jQuery鼠标点击处理函数:$(function()>{
>>var>option;
>>$(".scssbox").click(function()>{>//>闭包,该闭包同时也是一个匿名函数
>>>>option...
-
首先需要说明的是,严格而言NodeJS和Java、PHP并非对等概念,NodeJS是基于JS的一个应用程序,而Java/PHP是语言。我们这里实际指的是分别使用node、java和php来实现一个网页应用,在这样的相等用例下,各自的性能表现。自从2013年Paypal应用迁移到Node后,NodeJS被越来越多的巨头所使用。这里面当然不只是技术层面的考虑,还...
-
Angular和React是主流的2个前端开发框架,但是严格来说两者并非对等的概念。Angular是一个基于MVC(或者MVVM)的框架,包含model(模型)/view(视图)/controller(控制器),React只有view(视图)层。而Angular2使用TypeScript重建了整个框架,好处是可以利用TypeScript的增强语法。相对而言Angular是一个重量级的开发框...
-
UI编程中的一个关键课题就是界面组件化(可复用)以及组件状态管理。稍早一些的windows程序员可能接触过MFC,其界面编程中有一个DDX(DoDataExchange)的机制,用来绑定界面组件和数据成员。通过这样的绑定,由框架来负责当数据发生变化时完成相应UI的更新,而无需开发者编写代码,这无疑简化了编程。而在早期的Web开发中,...
-
本文对比了JS及其框架和CSS3的动画性能,并深入剖析了其内在原因。技术结论大致如下:1. jQuery出于设计原因,在动画性能上表现最差2. CSS3由于把动画逻辑推给了浏览器,优化了内存消耗、DOM操作和默认利用了RAF,所以要比jQuery动画性能更好3. CSS3可能会引起浏览器主线程和复合器线程之间过度数据交互,从而导致性能下降4...