您的位置:首页 > Web前端 > JavaScript

javascript基础(4)

2014-09-17 00:00 169 查看
摘要: js value

javascript中,变量可以存在两种类型的值,即原始值和引用值。解释如下:

原始值

存储在栈(stack)中的简单数据段,它们的值直接存储在变量访问的位置。js中有五类原始类型(primitive type),即Undefined, Null, Boolean, Number和String 。js 把术语类型(type)定义为值的一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。

Undefined:变量未定义或者定义以后未实例化,都是undefined类型

Null:null 被认为是对象的占位符,null 则用于表示尚未存在的对象

Boolean:true/false

Number:以0开头的为8进制;以0x开头为16进制;浮点数在进行运算之前,真正存储的格式为字符串;科学计数;特殊的值(Number.MAX_VALUE, Number.MIN_VALUE, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY);NaN(not a number),使用isNaN()函数来判断

String:它是唯一没有固定大小的原始类型,可以像数组一样调用其中的字符

引用值

存储在堆(heap)中的对象,存储在变量出的值是一个指针(point),只想存储对象的内存地址。引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。对象是由 new 运算符加上要实例化的对象的名字创建的。

Object:js 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中。Object有下列属性:

obj.constructor:对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。

obj.prototype:对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。

obj.hasOwnProperty(property):判断对象是否有某个特定的属性。必须用字符串指定该属性。

obj.isPrototypeOf():判断该对象是否为另一个对象的原型。

obj.propertyIsEnumerable(property):判断给定的属性是否可以用 for...in 语句进行枚举。

obj.toString()

ob.valueOf():返回最适合该对象的原始值。

Boolean:Boolean 对象是 Boolean 原始类型的引用类型。Boolean 对象将覆盖 Object 对象的 ValueOf() 方法,返回原始值,即 true 和 false。toString() 方法也会被覆盖,返回字符串 "true" 或 "false"。隐式转换时,js 会内在地将这个布尔值转换成一个临时的 Boolean 对象,然后调用这个对象的 toString() 方法,转换时,0, -0, null, ""、false, undefined 或 NaN的值为false,其余为true。

Number:Number 对象是 Number 原始类型的引用类型。所有特殊值都是 Number 对象的静态属性,要得到数字对象的 Number 原始值,只需要使用 valueOf() 。以下时Number对象的其它属性

toFixed(n):返回的是具有指定位数(n)小数的数字的字符串表示

toExponential():返回的是用科学计数法表示的数字的字符串形式

toPrecision():根据最有意义的形式来返回数字的预定形式或指数形式

String:String 对象是 String 原始类型的对象表示法。下面时一些String的方法

charAt(), charCodeAt(), concat(), indexOf(), lastIndexOf(), localeCompare, slice(), substring(), toLowerCase(), toUpperCase()
7ff0
, toLocaleLowerCase(), toLocaleUpperCase(), split()

Function:可以表示开发者定义的任何函数。

length:声明了函数期望的参数个数

arguments:函数的实际参数,有arguments.callee的属性,表示函数本身。在函数体内部直接使用

caller:返回的是调用该函数的函数

call(obj, [argumemt1, argument2...]):调用一个对象的一个方法,以另一个对象替换当前对象。obj对象替换this,执行上下文,作用域都使用obj对象

apply(obj, [Array]):类似call方法,但是第二个参数必须为数组。执行时会将数组转换成参数列表。后面是一个求书组中最大元素的表达式的例子 Math.max.apply(null, [Array])

Array:数组对象。以下是数组对象的一些方法

concat(), join(), pop(), push(), reverse(), shift(), slice(), sort(), splice(), unshift(), toLocaleString()

Date:日期对象

RegExp:正则对象

当变量赋值的时候,js的解释程序必须判断该值是原始类型还是引用类型。要实现这一点,解释程序则需要尝试判断该值是否为原始类型之一。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。如果一个值是引用类型的,那么它的存储空间将从堆中分配。由于引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: