JavaScript高级程序设计读书笔记(第五章)(三)
来源:互联网 发布:数控铣床编程简单100例 编辑:程序博客网 时间:2024/06/05 17:30
引用类型
基本包装类型
ECMAScript 还提供了3 个特殊的引用类型:Boolean、Number 和String。
引用类型与基本包装类型的主要区别就是对象的生存期。使用new 操作符创建的引用类型的实例,
在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。
var s1 = "some text";s1.color = "red";alert(s1.color); //undefined
Object 构造函数也会像工厂方法一样,根据传入值的类型返回相应基本包装类型的实例。
var obj = new Object("some text");alert(obj instanceof String); //true
值得注意的是,使用new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。new 出来的变量其typeof检测的类型值是Object,而直接创建的基本数据类型对象会检测出string,number或者boolean。
Number类型:
- toFixed()方法:toFixed()方法会按照指定的小数位返回数值的字符串表示:
var num = 10;alert(num.toFixed(2)); //"10.00"
toFixed()方法可以表示带有0 到20 个小数位的数值。
String类型
- charAt()方法:接收一个参数,即基于0 的字符位置。charAt()方法以单字符字符串的形式返回给定位置的那个字符
var stringValue = "hello world";alert(stringValue.charAt(1)); //"e"
- concat()方法:字符串连接,,concat()方法可以接受任意多个参数,也就是说可以通过它拼接任意多个字符串。
var stringValue = "hello ";var result = stringValue.concat("world");alert(result); //"hello world"var stringValue = "hello ";var result = stringValue.concat("world", "!");alert(result); //"hello world!"
在实践中更多的使用’+’操作符拼接字符串。
- slice()方法和substring()方法:截取字符串,传入两个参数,分别是截取字符串的开始和结束位置——不包含结束位置的字符,也可以只指定一个参数,表示截取此位置之后的所有字符。不会修改字符串本身的值,只是返回截取结果:
var str = 'text';str.slice(1,2);//estr.slice(1);//extstr.substring(1,2);//estr.substring(1);//ext
- substr():截取字符串,接收两个参数,第一个是起始位置,第二个是截取字符的个数。
在处理负数参数时,他们的三个方法的表现不同,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0。slice则将两个负数都加上字符串的长度,得到两个新参数。substring()方法会把所有负值参数都转换为0。
var stringValue = "hello world";alert(stringValue.slice(-3)); //"rld" = slice(8)alert(stringValue.substring(-3)); //"hello world" = substring(0)alert(stringValue.substr(-3)); //"rld" = substr(8)alert(stringValue.slice(3, -4)); //"lo w" = slice(3, 7)alert(stringValue.substring(3, -4)); //"hel" = substring(3, 0) = substring(0,3)alert(stringValue.substr(3, -4)); //""(空字符串)=substr(3, 0)
- indexOf和lastIndexOf()方法:这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置,lastIndexOf()是从后往前搜索字符。
var stringValue = "hello world";alert(stringValue.indexOf("o")); //4alert(stringValue.lastIndexOf("o")); //7
这两个方法都可以接收可选的第二个参数,表示从字符串中的哪个位置开始搜索:
var stringValue = "hello world";alert(stringValue.indexOf("o", 6)); //7alert(stringValue.lastIndexOf("o", 6)); //4
- trim()方法:去除字符串两端的空格。
var str= ' hello ';alert(str.trim());//'hello'
toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase():转换大小写方法。
split():这个方法可以基于指定的分隔符将一个字符串分割成
多个子字符串,并将结果放在一个数组中。此方法接收两个参数:第一个参数时分隔符,分隔符可以是字符串,也可以是一个RegExp 对象,第二个参数是数组的长度:
var colorText = "red,blue,green,yellow";var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"]var colors2 = colorText.split(",", 2); //["red", "blue"]
单体内置对象
Global对象
不属于任何其他对象的属性和方法,最终都是Global对象的属性和方法。所有在全局作用域中定义的属性和函数,都是Global 对象的属性。,诸如isNaN()、isFinite()、parseInt()以及parseFloat(),实际上全都是Global对象的方法。
- Global 对象的encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。
var uri = ' 百度'console.log(encodeURI(uri));// %20%E7%99%BE%E5%BA%A6,encodeURI对空格和中文字符进行了编码
解码使用decodeURI()和decodeURIComponent()。
- eval()方法:
方法就像是一个完整的ECMAScript 解析器,它只接受一个参数,即要执行的ECMAScript (或JavaScript)字符串。eval内执行的代码和在全局执行结果一样。
eval("alert('hi')") ==>alert("hi");var msg = "hello world";eval("alert(msg)"); //"hello world"eval("function sayHi() { alert('hi'); }");sayHi();
var global = function(){ return this;}();
以上代码创建了一个立即调用的函数表达式,返回了Global对象。
Math对象
- min()和max()方法:取得一组数值中的最小值和最大值。
var max = Math.max(3, 54, 32, 16);alert(max); //54var min = Math.min(3, 54, 32, 16);alert(min); //3
要找到数组中的最大或最小值,可以像下面这样使用apply()方法。
var values = [1, 2, 3, 4, 5, 6, 7, 8];var max = Math.max.apply(Math, values);
Math.ceil()、Math.floor()和Math.round():将小数值舍入为整数。
- Math.ceil()向上取整;
- Math.floor()向下取整;
- Math.round()四舍五入;
Math.random()方法:返回大于等于0 小于1 的一个随机数。
使用方法举例:
function selectFrom(lowerValue, upperValue) { var choices = upperValue - lowerValue + 1; return Math.floor(Math.random() * choices + lowerValue);}var num = selectFrom(2, 10);alert(num); // 介于 2 和10 之间(包括 2 和 10)的一个数值
上例中,可以自定义取值范围,从而创造取值范围中的随机数。
- JavaScript高级程序设计读书笔记(第五章)(三)
- JavaScript高级程序设计读书笔记(第五章)(一)
- JavaScript高级程序设计读书笔记(第五章)(二)
- JavaScript高级程序设计(第3版)第五章读书笔记
- JavaScript高级程序设计(读书笔记)(三)
- javascript高级程序设计 -- 读书笔记(三)
- Javascript高级程序设计 读书笔记(三)
- 《JavaScript高级程序设计》读书笔记(三)
- JavaScript高级程序设计----读书笔记,第五章
- JavaScript高级程序设计读书笔记(第三章)(三)
- JavaScript高级程序设计读书笔记(第六章)(三)
- javascript高级程序设计笔记(第五章)
- javascript高级程序设计笔记(第五章)
- JS高级程序设计读书笔记(第一章到第五章)
- 《JavaScript高级程序设计》学习笔记(第五章)- 上
- 《JavaScript高级程序设计》学习笔记(第五章)
- JavaScript高级程序设计(读书笔记)(一)
- JavaScript高级程序设计(读书笔记)(二)
- 九度OJ-1028:继续畅通工程
- C qsort函数
- 基于CSS实现的尖角提示符
- 无线路由器的设置简记
- PAT_A 1021. Deepest Root (25)
- JavaScript高级程序设计读书笔记(第五章)(三)
- Duilib 创建自定义控件
- Log4J使用详解(整理)
- [机械键盘]Filco87 奶酪绿 FKBN87MRL/ECW2 开箱
- 依赖注入
- Http、TCP/IP、UDP
- WebSphere数据源中的连接被意外关闭案例
- Codeforces 673D Bear and Two Paths【贪心】
- Java中有关Null的注意事项