首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

1 类型,值 和 变量

2012-10-20 
一 类型,值 和 变量类型:function classof(o){if(o null) return Nullif(o undefined) return

一 类型,值 和 变量
类型:

function classof(o){ if(o === null) return "Null"; if(o === undefined) return "Undefined"; return Object.prototype.toString.call(o).slice(8,-1); //因为有些js库会污染toString方法,所以这样调用,而不是用o.toString()}

extensible:

object是否可以被add/delete property,在E3中任何对象都是可以的,在E5中可以自定义。

Object.isExtensible(o);

Object.preventExtensible(o);一旦调用此方法之后,没有方法可以再变回去。

Object.seal():同时设置extensible false,并且改对象所有property.configurable=false。注意如果property是可写的,仍然可以改变其值,只是无法删除也无法添加新的。

Object.freeze():在seal基础上同时设置所有property为read-only。

注意:上述方法都只对object本身起作用,不影响其原型链上的东西。


JSON & serializing object

在https://github.com/douglascrockford/JSON-js/blob/master/json2.js 文件中定义了JSON.stringify和JSON.parse函数,这两个函数现在在E5中是内置函数了,chrome,firefox,safari等高级浏览器都提供了原生的JSON对象。


数组

array是一个特殊的object,特殊在一下三个地方

1, 其index 是一种特殊的 object property,特殊在其值只能是32bit的整数。

2,从Array.prototype继承了一些方法

3,会自动维护一个length属性。如果设置任何一个index>=length的元素,则length=index+1;如果设置length,则删除所有index>=length的元素。

除此之外,array和object没什么区别。

所以可以理解js中的array没有out of bound错误,因为查询一个大于length-1的index时,会被当做一个普通的property来对来,自然会返回undefined而不是报错。


对象 === 关联数组 === hashmap

在js中,对象就是关联数组(或者理解为map),其本质就是key->value的无序集合。

稀疏数组 sparse array

sparse array是指index不是0开始并连续的数组,和element为undefined的数组是不同的。

var a = new Array(5);     //没有元素,但是length为5,这是稀疏数组。

var a = {,,,,,}; //有5个元素,值为undefined, 这是普通数组,不同于稀疏数组。


很多数组方法对于array-like object,比如novelist都是适用的,通过Array.prototype.xxx.call(nodelist,x)的方式来调用。

所谓arra-like object,就是有index和有length属性的object,并且能用[]操作符来取值。

在E5中,string也是array-like的,不过是一个read-only array-like。


热点排行
Bad Request.