《Javascript权威指南》学习笔记之十四:JavaScript内建类

前面的几篇博文分别介绍了对象字符串数组日期等内建类,本篇将介绍Boolean/Math/Function/Arguments类

一、使用Boolean类处理逻辑值

Boolean类是JS的一个封装类,可以用于获取Boolean对象的原始数据类型或者字符串表示形式。new Boolean(value)用于创建一个Boolean对象,Boolean(value)它的参数转换成一个原始的布尔值,并且返回这个值。Boolean对象只有两个值:true或者false.

value参数可以省略。如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false")。

Boolean对象有三个方法:

但是在ECMAScript 5中,Boolean对象新增一个toJSON()方法,可以将逻辑值序列化为JSON格式字符串返回。

<script type="text/javascript">
var b = new Boolean("false");
document.write("b的值是:"+b+"<br/>");
document.write("b的源代码是:"+b.toSource()+"<br/>");
document.write("b的原始值是:"+b.valueOf()+"<br/>");
document.write("b的字符串值是:"+b.toString()+"<br/>");
</script>

FF中结果(在Google只能输出第一个[????])

二、使用Number类进行数字类型转换

在JavaScript中内建了Number类对数字数据进行处理。Number类是Number数据类型的一个简单封装,可以用Number类对象处理数据的原始值。在调用Number类的方法时要用new Number(value)创建Number对象,但是对于Number类的属性则是不需要,因为属性均是静态的。Number(value)函数用于转换,转换失败返回NaN。

Number类的属性:

Number类的方法

<span style="font-size:18px;">var num = new Number("1234");
document.write("转为16进制:"+num.toString(16)+"<br/>");  //默认是10进制
document.write("本地化:"+num.toLocaleString()+"<br/>");

var num1 = new Number("2.1415");
document.write("保留2位小数:"+num1.toFixed(2)+"<br/>");  //参数范围[0,20],表示保留的小数位数,不足补0
document.write("保留3位小数:"+num.toFixed(3)+"<br/>");
document.write("指定3个长度:"+num1.toPrecision(3)+"<br/>");  //有效长度,参数范围[0,21]
document.write("指数表示:"+num1.toExponential(2)+"<br/>");  //参数范围[0,20],表示需要的小数位数。
document.write("原值:"+num1.valueOf());                     //默认是0,即new Number()</span>

结果

如果不在参数指定的范围之内,均会抛出RangeError异常。在ECMAScript 5中新增了toJSON()方法,将数值序列化为JSON格式字符串并返回。

三、使用Math类进行复杂的数学运算

Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法,通过把 Math 作为对象使用就可以调用其所有属性和方法。

Math类的属性:

Math类的方法

四、使用Function和arguments类

4.1    Function类:JavaScript中的每个函数都由一个Function对象表示,均有三个实用方法:call()、apply()和bind()。都是用来调用函数的。

<span style="font-size:18px;">var theFunction = function(arg)
{
	document.write(arg+"<br/>");
	document.write(arguments+": 第二个参数:"+arguments[1]+"<br/>");
	document.write(this == myObj);
}
var myObj = new Object;
var arr = new Array("a","b","c");
theFunction.apply(myObj,arr);
theFunction.call(null,1,2,3);
</span>

结果:

与call()相比,apply()方法有如下不同:

1、如果在Javascript中调用的任何函数使用了this关键字,那么可以使用apply()指定this关键字所代表的对象值。

2、如果在Javascript中调用的任何函数内使用了arguments关键字,那么可以使用apply()指定arguments关键字所代表的参数值。

2、Arguments类和arguments属性

Arguments类代表函数参数作为数组元素作为存储,可以按访问数组元素的方法访问参数。arguments.length表示参数的数目。但是,不能用for...in循环访问arguments对象,需用for循环。

arguments有两个重要属性:

arguments.callee属性用来表示当前正在执行函数的引用,等价于arguments.callee.apply(null)或者arguments.callee.call(null);      oFunction.caller属性表示当前正在执行函数的调用者的引用,如果没有其他函数调用则返回null,等价于oFunction.caller.apply(null)或者oFunction.caller.call(null).

《Javascript权威指南》学习笔记之十四:JavaScript内建类

时间: 2024-08-26 07:30:58

《Javascript权威指南》学习笔记之十四:JavaScript内建类的相关文章

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

javascript权威指南学习笔记1

打开这本书,进入到javascript的世界.以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础. 学习前准备:web浏览器(F12用来唤醒和关闭firebug界面,ctrl+shift+j用来唤醒错误工作台,console.log()调试辅助) 本书分为4个部分:Javascript语言核心:客户端Javascript:Javascript核心参考:客户端Javascript参考.今天主要学了第一部分.主要

JavaScript高级程序设计学习笔记第十四章--表单

1.在 HTML 中,表单是由<form>元素来表示的,而在 JavaScript 中,表单对应的则是 HTMLFormElement 类型. HTMLFormElement 继承了 HTMLElement,因而与其他 HTML 元素具有相同的默认属性. 2.HTMLFormElement的独特属性和方法: acceptCharset:服务器能够处理的字符集:等价于 HTML 中的 accept-charset 特性. action:接受请求的 URL:等价于 HTML 中的 action 特

javascript权威指南学习笔记2

Javascript语言核心(2~12章) 第三章:类型.值.变量 1.数字: overflow(Infinity, -Infinity).underflow(+0,-0) 非数字值:它和任何值都不相等,包括自身.if(x!=x) return NAN:==>isNaN()判断是不是NaN或者字符串等 javascript的精度要注意,即(0.3-0.2)!=(0.2-0.1) Date()构造函数:月份从0开始计数,天数从1开始计数,星期天是0: 2.文本: 转义字符(牢记斜杠后面几个特殊的值

javascript 权威指南学习笔记

//通过id查找多个元素 function getElements(/*ids...*/){ var elements = {}: for(var i=0; i<arguments.length; i++){ var id = arguments[i]; var elt =document.getElementById("id"); if(elt == null) throw new Error("No element with id :" +id); ele

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

Android学习笔记(十四)——在运行时添加碎片(附源码)

在运行时添加碎片 点击获取源码 将UI分割为多个可配置的部分是碎片的优势之一,但其真正强大之处在于可在运行时动态地把它们添加到活动中. 1.使用上一篇创建的Fragments项目,在main.xml文件中注释掉两个<fragment>元素: 2.在FragmentActivity.java中添加下面的代码: FragmentManager fragmentManager = getSupportFragmentManager();//向活动添加碎片 FragmentTransaction fr

UI学习笔记---第十四天数据持久化

一.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内斗放在了统一的文件夹目录下 沙盘路径的位置 1. 通过Finder查找程序沙盘相对路径 ~/Library/Application Support/iPhone Simulator 2. 通过代码查找程序沙盘相对路径 NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearc

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没