易截截图软件、单文件、免安装、纯绿色、仅160KB

[董睿]javascript中的数据类型、Object与Function

1. 数据类型
javascript中包含6种数据类型:undefined、null、string、number、boolean和object。其中,前5
种是原始数据类型,object是对象类型。
object类型中包括Object、Function、String、Number、Boolean、Array、Regexp、Date、
Globel、Math、Error,以及宿主环境提供的object类型。
2. 类型判断
通常在javascript中进行类型判断主要通过3种方式:typeof、instanceof、constructor。
2.1 typeof
typeof操作可能返回的类型为undefined、object、number、string、function、boolean。但是会有一
些情况并不能完全判断准确。比如typeof new String('')的值为object。
2.2 constructor
有时候我们可能会很偷懒的使用a.constructor ==
String进行类型判断,但是constructor其实是不靠谱的东西。因为当我们调用a.constructor的时候,内部操作其实是
ToObject(a).prototype.constructor(ToObject是什么,看下文分解)。
看下面一段代码就能明白:
String
.
prototype
.
constructor
=
Number
;

alert
(
'test'
.
constructor
==
String
);
//Result:false

或者
function
MyClass
()
{

}

MyClass
.
prototype
=
{};

alert
((
new
MyClass
).
constructor
==
MyClass
);
//Result:false

而且,通过constructor并不能判断出对象实例类型的继承关系。因为javascript的继承其实是通过原型链实现的(原型链是什么,看
下文分解)。
另外,null.constructor会抛出运行时的TypeError,所以使用constructor除了不靠谱外,还可能伴随着异常的风
险。
2.3 instanceof
例子:a instanceof String
关于object类型的判断,使用instanceof判断是比较靠谱的方法。instanceof所做的事情是,先取出类型对象(String)
的prototype成员(String.prototype),然后和要判断类型的对象(a)的原型链中的对象逐个比较。当发现是一个对象的时候返回
true,原型链中当前节点是null的时候返回false。
类型判断示例:判断一个变量是否是字符串类型
function
isString
(
str
)
{

return
(
typeof
str
==
'string'
||
str
instanceof
String
);

}

3. 类型转换
ecma262中描述了以下几种类型转换的操作:(还有其他的比如ToInt32等,这里就不列了)

ToNumber:转换成number型


ToString:转换成string型



相关文档:

JavaScript精粹读书笔记(2)

如果你想加我为好友:请点击以下链接http://hi.csdn.net/invite.php?u=8943&
c=759c7fc189ea23c1
 
第2章
     
语法
本章介绍
JavaScript
的精华部分的语法,并简要地概述其语言结构。
2.1
    
空白
空白可能表现为格式化字符或注释
的形式。空白 ......

JavaScript精粹读书笔记(3)

第3章
 
对象
JavaScript
的简单类型包括
数字、字符串、布尔值(
true

false
)、
null
值和
undefined
值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变
的。
JavaScript
中的对象是可变的键
-
值集合
(keyed
collections)
。在 ......

JavaScript精粹读书笔记(6)

第6章
 
数组
数组是一段线性分配的内存,它通
过整数去计算偏移并访问其中的元素。数组可以是很快的数据结构。不幸的是,
JavaScript
的数组不是这样的。它提供了一种拥有类似数组特性的对象。它把数组的下标转变成字符串,用其作为属
性。它明显地比一个真正的数组慢,但它可以更方便地使用。属性的检索和更 ......

JavaScript精粹读书笔记(1)

http://blog.csdn.net/mouyong/archive/2009/10/02/4626852.aspx
如果你想加原作者为好友:请点击以下链接http://hi.csdn.net/invite.php?u=8943&c=759c7fc189ea23c1
第1章   精华
JavaScript的特性中有一部分特性带来的麻烦远远超出它们的价值。其中,一些特性是因为规范很不完善,从而可能导致可移 ......

JavaScript精粹(4 2)

http://blog.csdn.net/mouyong/archive/2009/12/07/4959827.aspx
4.9   作用域
在编程语言中,作用域控制着变量与参数的可见性及生命周期。对程序员来说这是一个重要的帮助,因为它减少了名称冲突,并且提供了自动内存管理。
大多数使用C语言语法的语言都拥有块级作用域。在一个代码块中(括在一对花括号 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号