JavaScript包装对象使用介绍


Posted in Javascript onAugust 29, 2013

JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法,然而

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 相关文章推荐
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
Jun 04 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
jQuery中element选择器用法实例
Dec 29 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
AngularJS基础 ng-class-odd 指令示例
Aug 01 Javascript
vue用递归组件写树形控件的实例代码
Jul 19 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
JavaScript作用域链使用介绍
Aug 29 #Javascript
JavaScript 命名空间 使用介绍
Aug 29 #Javascript
JavaScript prototype 使用介绍
Aug 29 #Javascript
JavaScript创建对象的写法
Aug 29 #Javascript
jQuery实现用户注册的表单验证示例
Aug 28 #Javascript
Jquery实现显示和隐藏的4种简单方式
Aug 28 #Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 #Javascript
You might like
PHP实现Socket服务器的代码
2008/04/03 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
简单谈谈favicon
2015/06/10 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP7 其他修改
2021/03/09 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
js实现动态时钟
2020/03/12 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python阶乘求和的代码详解
2020/02/14 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
浅析Python __name__ 是什么
2020/07/07 Python
python自动生成sql语句的脚本
2021/02/24 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
爱国卫生月实施方案
2014/02/21 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
瘦西湖导游词
2015/02/03 职场文书
禁毒心得体会范文
2016/01/15 职场文书