JavaScript包装对象
2015-11-25 19:48
429 查看
JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法,然而
结果很简单,但是仔细想想还真奇怪,string不是值类型吗!怎么又有属性又有方法的!
JavaScript有一系列内置对象来创建语言的基本功能,具体看一下
Boolean
Boolean 对象表示两个值:"true" 或 "false"。当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值,如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串
"false")。
条件语句中 true 或 false 值的简单判断,布尔值和条件语句的组合提供了一种使用 JavaScript 创建逻辑的方式。
Number
Number对象是一个数值包装器,该对象包含几个只读属性
String
除了上面三个对象,JavaScript还拥有Date、Array、Math等内置对象,这三个经常显示使用,所以非常熟悉,知道了内置对象就可以看看上面例子是怎么回事儿了。
只要是引用了字符串的属性和方法,JavaScript就会将字符串值通过new String(s)的方式转为内置对象String,一旦引用结束,这个对象就会销毁。所以上面代码在使用的实际上是String对象的length属性和indexOf方法。
同样的道理,数字和布尔值的处理也类似。,null和undefined没有对应对象。既然有对象生成,能不能这样
结果并没有返回10,而是undefined!不是说好了是个对象吗!正如刚才提到第二行代码只是创建了一个临时的String对象,随即销毁,第三行代码又会创建一个新的临时对象(这就是低版本IE频繁处理字符串效率低的一个原因),自然没有len属性。这个创建的临时对象就成为包装对象。没想到一行简单的代码还包含这么多姿势。
var s='this is a string'; alert(s.length); alert(s.indexOf('is'));
结果很简单,但是仔细想想还真奇怪,string不是值类型吗!怎么又有属性又有方法的!
内置对象
JavaScript有一系列内置对象来创建语言的基本功能,具体看一下Boolean
Boolean 对象表示两个值:"true" 或 "false"。当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值,如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串
"false")。
Boolean对象包括
toString和
valueOf方法,
Boolean最常用于在
条件语句中 true 或 false 值的简单判断,布尔值和条件语句的组合提供了一种使用 JavaScript 创建逻辑的方式。
Number
Number对象是一个数值包装器,该对象包含几个只读属性
MAX_VALUE:1.7976931348623157e+308 //JavaScript能够处理的最大数
MIN_VALUE:5e-324 //JavaScript能够处理的最小数
NEGATIVE_INFINITY:-Infiny //负无穷
POSITIVE_INFINITY:Infinity //正无穷
NaN:NaN //非数字
Number对象还有一些方法,可以用这些方法对数值进行格式化或进行转换
toExponential //以指数形式返回 数字的字符串表示
toFixed //把Number四舍五入为指定小数位数的数字
toPrecision //在对象的值超出指定位数时将其转换为指数计数法
toString //返回数字的字符串表示
valueOf //继承自object
String
String对象是文本值的包装器。除了存储文本,
String对象包含一个属性和各种 方法来操作或收集有关文本的信息,
String对象不需要进行实例化便能够使用。
String对象只有一个只读的
length属性用于返回字符串的长度。String对象拥有很多方法
charAt
charCodeAt
concat
fromCharCode
indexOf
lastIndexOf
match
replace
search
slice
split
substr
substring
toLowerCase
toUpperCase
包装对象
除了上面三个对象,JavaScript还拥有Date、Array、Math等内置对象,这三个经常显示使用,所以非常熟悉,知道了内置对象就可以看看上面例子是怎么回事儿了。只要是引用了字符串的属性和方法,JavaScript就会将字符串值通过new String(s)的方式转为内置对象String,一旦引用结束,这个对象就会销毁。所以上面代码在使用的实际上是String对象的length属性和indexOf方法。
同样的道理,数字和布尔值的处理也类似。,null和undefined没有对应对象。既然有对象生成,能不能这样
var s='this is a string'; s.len=10; alert(s.len);
结果并没有返回10,而是undefined!不是说好了是个对象吗!正如刚才提到第二行代码只是创建了一个临时的String对象,随即销毁,第三行代码又会创建一个新的临时对象(这就是低版本IE频繁处理字符串效率低的一个原因),自然没有len属性。这个创建的临时对象就成为包装对象。没想到一行简单的代码还包含这么多姿势。
相关文章推荐
- JavaScript作用域链
- JS的'=='、'==='、'!='、'!=='及数字字符串的'-'操作
- JSR规范整理(整理中......)
- JSP获取客户端的IP地址的方法
- 南大软院大神养成计划--js
- JSP基础——创建、启动、浏览项目
- js控制密码的显示与隐藏实例
- JS 限制上传文件的类型和大小
- js面向对象之公有、私有、静态属性和方法详解
- 识别手机访问的js代码
- js ajax 返回值问题
- js中confirm实现执行操作前弹出确认框的方法
- js cookie读取
- Js中面向对象编程之继承的几种方式及理解
- GSON解析json数据
- js 本月,下一月,上一月
- js 获取当前日期所在周的周一
- C#:JSON嵌套对象反系列化,读取对象的值
- js 前加分号和感叹号是什么意思?
- 学习JavaScript设计模式(多态)