51CTO博客开发
在java、C++等语言中,for循环中的i变量只会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁。可是在js中,变量i是定义在outputNumbers()的活动对象中,因此一旦从它有定义开始,就可以在函数内部随处访问它。
闭包所保存的变量是整个变量对象,而不是某个特殊的变量,即闭包只能取得包含函数中任何变量的最后一个值。
每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。(将一个类型的实例赋值给另外一个构造函数的原型时,就通过原型链来实现了继承。那么子类就能够访问到超类的全部方法和属性,包括原型方法和属性。)
每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处是让所有的对象实例共享它包含的属性和方法。每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定的名字的属性,搜索首先是从对象实例本身开始。如果在实例中找到了具有给定的名字的属性时,则会返回该属性的值;如果在没有找到,则继续
垃圾收集器是周期性运行的,而且如果为变量分配内存数量很客观,那么回收工作量也必然会很大。IE的垃圾收集器是根据内存分配量运行的,具体一点说就是256个变量、4096个对象(或数组)字面量和数组元素或者64KB的字符串。如果达到了前面说的任何一个临界值的话,垃圾收集器就会运行。
简单来说,AOP就是一种功能比较复杂的拦截器。在代码真正到达目标以前,AOP可以对其进行拦截,提供一些通用的中间件的服务。如加上事务服务,记录日志等。 Spring的声明事物也就是基于AOP实现的。声明事物可以最少程度的影响应用程序的代码。Spring的声明事物为普通java类封装事务控制,底层是应用动态代理的技术。动态代理的一个重要特征是针对
ECMAScript中所有函数的参数都是按值传递的。
Math.random()方法返回介于0和1之间的随机数,不包括0和1。 套用下面的公式就可以用Math.random()方法从某个整数范围内随机选择一个数。 值=Math.floor(Math.random()*可能值的总数+第一个可能数的值)
s中常用小数舍入为整数的方法有几个:Math.ceil()、Math.floor()、Math.round()。
其实每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法用途都是在特定的作用域中调用函数,实际上等于设置函数体内的this对象的值。
实际上,解释器在向执行环境加载数据时,对函数声明与函数表达式并不是一视同仁的。解析器会率先读取函数声明,并使其中在执行任何代码之前可以访问,至于函数表达式,则必须等到解析器执行到它所在的代码行时,才会被真正解析执行的。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号