Invictus Blog

Don't be evil

JavaScript深入之闭包

javascript 深入学习

定义 MDN 对闭包的定义为: 闭包是指那些能够访问自由变量的函数。 那什么是自由变量呢? 自由变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。 由此,我们可以看出闭包共有两部分组成: 闭包 = 函数 + 函数能够访问的自由变量 举个例子: var a = 1; function foo() { console.log(a); } foo(); ...

JavaScript深入之从ECMAScript规范解读this

javascript 深入学习

前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性 变量对象(Variable object,VO) 作用域链(Scope chain) this 今天重点讲讲 this,然而不好讲。 因为我们要...

JavaScript深入之作用域链

javascript 深入学习

前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用域链(Scope chain) this 今天重点讲讲作用域链。 作用域链 在《Java...

JavaScript深入之变量对象

javascript 深入学习

前言 在上篇《JavaScript深入之执行上下文栈》中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用域链(Scope chain) this 今天重点讲讲创建变量对象的过程。 变量...

JavaScript深入之执行上下文栈

javascript 深入学习

顺序执行? 如果要问到 JavaScript 代码执行顺序的话,想必写过 JavaScript 的开发者都会有个直观的印象,那就是顺序执行,毕竟: var foo = function () { console.log('foo1'); } foo(); // foo1 var foo = function () { console.log('foo2'); ...

JavaScript深入之词法作用域和动态作用域

javascript 深入学习

作用域 作用域是指程序源代码中定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。 静态作用域与动态作用域 因为 JavaScript 采用的是词法作用域,函数的作用域在函数定义的时候就决定了。 而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时...

javascirpt 原型

javascript 深入学习

JavaScript深入之从原型到原型链 构造函数创建对象 我们先使用构造函数创建一个对象: function Dog(){ } var dog = new Dog() dog.name = 'ken' console.log(dog.name) 在这个例子中,Dog 就是一个构造函数,我们使用 new 创建了一个实例对象 dong. ...

android View 事件传递

android面试

android 事件分发机制 1、基础知识 (1) 所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。 (2) 事件类型分为 ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANC...

android 设计模式

android面试

##面向对象的六大原则 #单一职责原则 所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。通俗的说,即一个类只负责一项职责,将一组相关性很高的函数、数据封装到一个类中。 #开闭原则   对于扩展是开放的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使...

android 面试ListView

android面试

面试题:如何优化ListView的性能? 在回答这个问题前,我认为很有必要和大家讲几点和getView相关的问题。我们设置或者优化ListView的性能很多时候都是在getView中完成的,反过来说就是很多性能问题都是由于没有正确使用getView造成的。 public View getView(int position, View convertView, ViewGroup pare...