javascript系统对象
javascript中的系统对象又分为了
1.本地的对象(非静态对象)
2.内置对象(静态对象)
3.宿主对象(浏览器提供的对象)
1.本地对象
什么是本地对象呢。
ECMA-262把本地对象(native object)定义为“独立于宿主环境的ECMAScript实现提供的对象”。
简单的来说,操作系统和浏览器就是,本地对象的宿主环境,就是用户的机器环境。把浏览器比喻成人,js的本地对象就是人肚子里的蛔虫。
在本地对象中包括了Object、Function、String、Array、Boolean、Number、Date、 RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。
其中较为常用的有,Object、Function、Array、String、Boolean、Number、Date、RegExp、Error。
本篇博文主要介绍上面的这些。
1.1 object
object 是最为参见的对象
var a = ‘123’ 是一个object对象
var car = {type:”Fiat”, model:500, color:”white”};
也是一个对象。
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
这么写也是一个object对象
var obj = new Object()
这是定义一个新的object对象。
1.2Function
或许看到Function很多人认为就是function是一个函数,但是并不是,function是函数,Function是类
在javascript我们声明了一个函数,实际上是创建了一个Function类的对象。
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
最简单的
function functionname()
{
执行代码
}
通过这种形式,我们可以很清楚的看出所谓的函数只不过是Function类的一个对象而函数名只不过是对这个对象的引用。可以简单的把函数名理解成为一个指针,指向所引用的Function 类的实例。
Array
Array 对象用于在变量中存储多个值:
var abc = ["xiaoming","male","18"];
第一个索引值为0,第二个为1,往下推算
Array的属性
constructor | length | prototype |
---|---|---|
返回创建数组对象的原型函数。 | 设置或返回数组元素的个数。 | 允许你向数组对象添加属性或方法。 |
Array对象属性
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果。 |
copyWithin() | 从数组的指定位置拷贝元素到数组的另一个指定位置中。 |
every() | 检测数值元素的每个元素是否都符合条件。 |
fill() | 检测数值元素,并返回符合条件所有元素的数组。 |
filter() | 连接两个或更多的数组,并返回结果。 |
find() | 返回符合传入测试(函数)条件的数组元素。 |
findIndex() | 返回符合传入测试(函数)条件的数组元素索引。 |
forEach() | 数组每个元素都执行一次回调函数。 |
indexOf() | 搜索数组中的元素,并返回它所在的位置。 |
join() | 把数组的所有元素放入一个字符串。 |
lastIndexOf() | 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。 |
map() | 通过指定函数处理数组的每个元素,并返回处理后的数组。 |
pop() | 删除数组的最后一个元素并返回删除的元素。 |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
reduce() | 将数组元素计算为一个值(从左到右)。 |
reduceRight() | 将数组元素计算为一个值(从右到左)。 |
shift() | 删除并返回数组的第一个元素。 |
slice() | 选取数组的的一部分,并返回一个新数组。 |
some() | 检测数组元素中是否有元素符合指定条件。 |
sort() | 对数组的元素进行排序。 |
splice() | 从数组中添加或删除元素。 |
toString() | 选把数组转换为字符串,并返回结果。 |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
valueOf() | 返回数组对象的原始值。 |
其中较为常用的是concat(),pop(),push(),shift(),sort(),unshift(),splic(),toString()
这些方法的使用方法都是跟在数组后面
例如
var arr = new Array();
arr.push('1');
arr.splic(',')
1.3 String
String 对象
String 对象用于处理文本(字符串)。
String 对象创建方法: new String().
var txt = new String("string");
或者更简单方式:
var txt = "string";
String的属性
constructor | length | prototype |
---|---|---|
返回创建数组对象的原型函数。 | 设置或返回数组元素的个数。 | 允许你向数组对象添加属性或方法。 |
常用的方法有
concat(),用于连接字符
var str = 'abc';
str.concat('123');
console.log(str);
输出
abc123
match()
var str = 'abc 123';
console.log(str.match('abc'););
输出
abc
replace()
var str = 'abc 123';
console.log(str.replace(/abc/,'cba'););
输出
cba 123
search
var str = 'abc 123';
console.log(str.search(/123/));
输出
5(1出现的地方为第五个)
slice()
stringObject.slice(start,end)
var str = 'abc 123';
console.log(str.slice(3))
输出
123;
console.log(str.slice(4,7))
输出
123;
split()
var str = 'abc,123';
console.log(str.split(','));
输出
['abc','123']
Math()
math为数学运算对象
document.write(Math.round(4.7))
输出5
document.write(Math.random())
来返回一个介于 0 和 1 之间的随机数:
0.9370844220218102
document.write(Math.floor(Math.random()*11))
例子使用了 Math 对象的 floor() 方法和 random() 来返回一个介于 0 和 10 之间的随机数:
3
Math.PI
PI为圆周率,用于圆形的计算
Math.cos
Math.sin
Math.tan
为三角函数的运算
正则运算对象
RegExp 对象的方法
RegExp 对象有 3 个方法:test()、exec() 以及 compile()。
test()
test() 方法检索字符串中的指定值。返回值是 true 或 false。
test()
test() 方法检索字符串中的指定值。返回值是 true 或 false。
由于该字符串中存在字母 “e”,以上代码的输出将是:
true
exec()
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));
由于该字符串中存在字母 “e”,以上代码的输出将是:
e
您可以向 RegExp 对象添加第二个参数,以设定检索。例如,如果需要找到所有某个字符的所有存在,则可以使用 “g” 参数 (“global”)。
var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null)
由于这个字符串中 6 个 “e” 字母,代码的输出将是:
eeeeeenull
compile()
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));
由于字符串中存在 “e”,而没有 “d”,以上代码的输出是:
truefalse
2内置对象
ECMA-262把内置对象(built-in object)定义为“ 由ECMAScript实现提供的,独立与宿主环境的所有对象,在ECMAScript程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已经被实例化了。ECMA只定义了两个内置对象,即Global和Math(它们也是本地对象,根据定义,所有内置对象都是本地对象)。
1)Math对象的常见属性:E(算术常量e,即自然对数的底数,约为2.718)、PI(圆周率,约为3.14159)。
Math对象的常见方法:
max(x,y): 返回x和y中较大的值;
min(x,y): 返回x和y中较小的值;
random(): 返回0~1之间的随机数;
round(x): 对数四舍五入;
floor(x): 对数向下取整;
ceil(x): 对数向上取整;
2)Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,不信,在浏览器console中输入Global,报错。
全局对象是预定义的对象,作为JavaScript全局函数和全局属性的占位符。全局对象不是任何对象的属性,所以它没有名称?。
在顶层JavaScript代码中,可以用关键字this来引用全局对象。但通常不必用这种方式引用全局对象,因为全局对象是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该对象的属性来查询。例如,当JavaScript代码引用parseInt函数时,它引用的是全局对象的parseInt属性。
全局对象是作用域链的头,这意味着在顶层JavaScript中申明的变量都将成为全局对象的属性。
全局对象只是一个对象,而不是类。即没有构造函数,也无法实例化一个新的全局对象。
顶层属性(全局属性):
NaN: 指示某个值是不是数字值;
undefined: 未定义的值; Infinity: 正的无穷大的数值。
顶层函数(全局方法):
isNaN(): 检测某个值是否为数值; isFinite(): 检测某个值是否为无穷大的值;
Number(): 把对象的值转换为数值; String(): 把对象的值转换为字符串; Boolean(): 把对象的值转换为布尔值;
parseInt(): 解析一个字符串并返回整数; parseFloat(): 解析一个字符串并返回浮点值;
encodeURI(): 将字符创编码为URI; decodeURI(): 解码某个编码的URI;
encodeURIComponent(): 将字符串编码为URI组件; decodeURIComponent(): 解码某个编码的URI组件;
escape(): 对字符进行编码; unescape(): 对由escape编码的字符串进行解码;
eval(): 计算JavaScript字符串,并把它作为脚本代码来执行;
3.宿主对象
所有非本地对象都是宿主对象(host Object),即由ECMAScript实现的宿主环境提供的对象。
所有的BOM和DOM对象都是宿主对象。
那如下代码中的oPerson对象呢,既不是ECMA官方定义的本地对象,也不是宿主对象,它是用户自定义的对象(user defined object)。
var oPerson = new Object();
oPerson.name = "ting";
oPerson.age = 23;
宿主对象中BOM的windows对象
比较常用的方法
window.open() - 打开新窗口
window.close() - 关闭当前窗口
window.moveTo() - 移动当前窗口
window.resizeTo() - 调整当前窗口的尺寸
Window Screen
常用的
screen.availWidth - 可用的屏幕宽度
<script>
document.write("可用宽度:" + screen.availWidth);
</script>
输出
可用宽度:1360
screen.availHeight - 可用的屏幕高度
<script>
document.write("可用高度:" + screen.availHeight);
</script>
输出
可用高度:728
Window Location
window.location 对象在编写时可不使用 window 这个前缀。
Window Location Href
<script>
document.write(location.href);
</script>
输出
http://write.blog.csdn.net/mdeditor#!postId=73849469
Window Location Pathname
<script>
document.write(location.pathname);
</script>
输出
/local-ntp.html
Window Location Assign
<html>
<head>
<script>
function newDoc()
{
window.location.assign("http://www.w3school.com.cn")
}
</script>
</head>
<body>
<input type="button" value="加载新文档" onclick="newDoc()">
</body>
</html>
结束语
本地对象是ECMA官方定义好的对象;内置对象也是本地对象,只包括Global对象和Math对象;宿主对象包括BOM和DOM对象。