Javascript对象 、本地对象、内置对象、宿主对象及自定义对象

JavaScript、的组成部分

1)ECMAScript,描述了js的语法和基本对象。  (它被称为JavaScript或JScript这两者是ECMA-262标准的实现和扩展) 
2)文档对象模型(DOM),描述处理网页内容的方法和接口。
3)浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

ECMA-262的宿主解析:  

宿主是指寄生物依赖生存的环境,在这里宿主明显是代表(WCMAScript的承载->浏览器  操作系统 都是宿主).

1、本地对象

在ECMA-262中把本地对象(native object)定义为"独立于宿主环境的ECMAScript实现提供的对象. 简单来说本地对象就是ECMA-262定义的类(引用类型) ,“本地对象”包含以下"15"种类型:

Object、    (对象)   Function、(函数)    Array、     (数组)   String、   (字符串)  

Boolean、 (布尔)   Number、 (数值)    Date、      (获取)   RegExp、(正则表达式)

Error、      (错误)   EvalError、             RangeError、      ReferenceError、

SyntaxError、       TypeError、             URIError


2、本地对象对应的方法

数组

Array 对象属性

1)、constructor  返回对创建此对象的数组函数的引用。

2)、length    设置或返回数组中元素的数目。

3)、prototype     使您有能力向对象添加属性和方法。


Array 对象方法

1)、数组拼接  concat()连接两个或更多的数组,并返回结果.

//写法一
var arr = [1, 2, 3];
var brr = arr.concat(4, 5, 6);
alert(arr); //1,2,3
alert(brr); //1,2,3,4,5,6		
//写法二
var arr = [1, 2, 3];
var brr = [4, 5, 6];
alert(arr.concat(brr)); //1,2,3,4,5,6	

//写法三
var arr=[1,2,3,4,5,6]  
var brr=['a','b','c','d','e','f']; 
var crr=[6,5,4,3,2,1]  
alert(arr.concat(crr,brr)); //1,2,3,4,5,6,6,5,4,3,2,1,a,b,c,d,e,f
concat()方法会创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组,原来的数组不变.


2)、 数组的分隔符 join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

//写法一
var arr=[1,2,3,4,5,6]  
alert(arr.join('-')); //1-2-3-4-5-6
需要使用时写在alert()里面 且分隔符用  '  '      用单引号包住!

不会增加  只有在直接作用时才有用  是连接符 .拼接的元素 在两个两个元素之间进行添加  当只在括号加('')两个空单引号时 会把逗号给去掉 成拼接作用

join括号里面的参数:  在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符


3)、 从尾部删除 pop() 删除并返回数组的最后一个元素

var aArr=[6,7,8];    //声明数组  
aArr.pop()           //使用后每次删除最后一个数值  直至删除完毕   剩余6  7  
aArr.pop()           //剩余6  
aArr.pop()           //空  
alert(aArr);         //弹出的结果是6,7,8,9,10,11, 
每次去删除数组 Array的最后一个元素 ,把数组长度减1,并且返回它删除后剩余的元素的值。


4)、从尾部添加  push() 向数组的末尾添加一个或更多元素,并返回新的长度。
//push使用方法  
var aArr=[6,7,8];    //声明数组  
aArr.push(9,10,11);  //像数组尾部添加数值  可添加一个或者多个  
alert(aArr);         //弹出的结果是6,7,8,9,10,11,  
数组名.push( 要添加的值 多个时用逗号隔开


5)、颠倒数组  reverse()颠倒数组中元素的顺序。

//reverse数组的颠倒顺序  
var arr=[1,2,3,4,5,6,7,8,9,10];  
arr.reverse();  
alert(arr);   //结果为10,9,8,7,6,5,4,3,2,1 

6)、从头部开始的删除   shift() 删除并返回数组的第一个元素

//shift的使用方法  
var arr=[6,7,8];  
arr.shift();         //删除数组的首个元素   
alert(arr);          //结果为7,8 

7)、 数组分割 slice() 从某个已有的数组返回选定的元素

//slice数组的方法  
var arr = [1,2,3,4,5,6,7,8];  
  
//alert(arr.slice(0));    //返回值为1,2,3,4,5,6,7,8  
//alert(arr.slice(1,4));  //返回值为2,3,4  
//alert(arr.slice(2,5));  //返回值为3,4,5  
//alert(arr.slice(3));    //返回值为4,5,6,7,8  
  alert(arr);             //返回值为1,2,3,4,5,6,7,8 

slice()方法接收一个或两个参数,即要返回项的开始位置和结束位置。如果只要一个参数,则返回从指定位置开始到数组结束的所有项。如果接收两个参数,则返回起始和结束位置之间的所有项但不包括结束位置的项

当 slice为负数,则表示倒数计算的位置.

//slice数组的方法  
   var arr = [1,2,3,4,5,6,7,8,9,10,11];  
//alert(arr.slice(-3));      //返回的值为8,9,10  倒数三位数  
//alert(arr.slice(-3,-1));   //返回的值为最后倒数的三位数 的倒数第二位  9,10  
alert(arr);                 //返回的值为 1,2,3,4,5,6,7,8,9,10,11 


8)、数组的排序  sort() 对数组的元素进行排序

//sort数组的排序  
    var arr=[8,9,7,3,6,4,5,2,1];  
    var brr=['float', 'width', 'alpha', 'zoom', 'left'];  
    arr.sort();  
    brr.sort();  
    alert(arr);//结果为 1,2,3,4,5,6,7,8,9  
    alert(brr);//结果为alpha,float,left,width,zoom  
 sort()对数组进行排序,它的默认排序方式并不是大小,而是根据对应字符串逐个编码排序的。sort()方法可以接收一个比较函数,进行自定义排序

9)、 从位置删除、添加、置换数组  splice() 删除元素,并向数组添加新元素。

语法  数组.splice(start, deleteCount, value, ...)  中间是逗号隔开  能实增 删 改

start代表的是
开始插入和(或)删除的数组元素的位置(是下标)从下标的位置开始   即0代表1    开始的位置
deleteCount
从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
value, ...
要插人数组的零个或多个值(多个时 中间用逗号隔开),从start所指的下标处开始插入。

代码如下:

//方法splice 使用方法  
var arr=[1,2,3,4,5,6];         
arr.splice(0,1,9,9,9,9);   //第一个值代表从第一个开始 , 删除的个数 , 后面是需要 添加的值  
alert(arr);   
置换:
//方法splice 使用方法  
var arr=[1,2,3,4,5,6];         
arr.splice(0,2,9,9);   //第一个值代表从第一个开始 , 删除的个数 , 后面是需要 添加的值  
alert(arr);            //弹出结果 9,9,3,4,5,6  

10)、toString() 把数组转换为字符串,并返回结果。

toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串 (通过调用这些元素的toString()方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的join()方法返回的字符串相同。
代码如下:

            var arr = new Array(3);  
            arr[0] = "George";  
            arr[1] = "John";  
            arr[2] = "Thomas";  
//          document.write(arr.toString());  
            alert(arr.toString());//结果为返回一个拼接的字符串中间用逗号隔开 George,John,Thomas;


11)、toSource() 返回该对象的源代码。

12)、toLocaleString() 把数组转换为本地数组,并返回结果。

13)、valueOf() 返回数组对象的原始值

每个对象都具有toLocaleString()、toString()和valueof()方法。调用数组的toString()方法会返回数组中每个值的字符串形式拼接而成并且以逗号分隔的字符串,调用数组的valueof()方法返回的还是数组,实际上调用的是数组每一项的toString()方法,如下:

var arr = ["red","green","blue"];
console.log(arr.toString());   //red,green,blue
console.log(arr.valueof());    //red,green,blue
console.log(arr);              //red,green,blue

 而调用数组的toLocaleString()方法,与toString()不同的是它会调用数组每一项的toLocaleString()方法,将每一项toLocaleString()方法的返回值以逗号分隔拼接成一个字符串。而使用join()方法,可以使用不同的分隔符来构建这个字符串,如下:

var arr = ["red","green","blue"];
console.log(arr.join(","));   //red,green,blue
console.log(arr.join("||"));   //red||green||blue

14)、unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

unshift()方法与shift()用途相反,它能够在数组前端添加任意个项并返回新数组的长度,例如:

var arr = [1,2,3];
arr.unshift(4);   //返回长度4
arr.unshift(5);   //返回长度5
console.log(arr);   //[1,2,3,4,5]


  • Concat
    Concat joins two or more arrays. The method does not change the existing arrays
    连接两个或更多数组,这个方法不会改变现有的数组。
  • Join
    Joins the contents of an array into one string.
    连接数组的内容到一个字符串。
  • Push
    Adds value to the end of the array.
    在数组的末端添加值。
  • Add
    Adds value to the end of the array.
    在数组的末端添加值。
  • Pop
    Removes the last element of the array and returns it.
    移除数组最后一个元素并返回它。
  • Shift
    Removes the first element of the array and returns it.
    移除数组第一个元素并返回它。
  • RemoveAt
    Removes the element at index from the array.
    从数组中移除位于索引的元素。
  • Unshift
    Unshift adds one or more elements to the beginning of an array and returns the new length of the array.
    在数组开始位置添加一个或多个元素并返回新的数组长度。
  • Clear
    Empties the array. The length of the array will be zero.
    清空数组,数组长度将变为0。
  • Reverse
    Reverses the order of all elements contained in the array.
    反转数组中所有元素的顺序。
  • Sort
    Sorts all Array elements
    排序所有数组元素 。


Date

Date 对象方法
方法 描述
Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。


内置对象
ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。

同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。

如此就可以理解了。内置对象是本地对象的一种。而其包含的两种对象中,Math对象我们经常用到,可这个Global对象是啥东西呢?

Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,但大家要清楚,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且Global对象的方法还不止这些。有关Global对象的具体方法和属性,感兴趣的同学可以看一下这里:JavaScript 全局对象参考手册

3.宿主对象
由ECMAScript实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的BOM和DOM都是宿主对象。

4.自定义对象



总结:
JS中,可以将对象分为“内部对象”、“宿主对象”和“自定义对象”三种。

1,内部对象

js中的内部对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。

其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。

2.宿主对象

宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。

浏览器对象有很多,如Window和Document等等。

3.自定义对象

顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充

你可能感兴趣的:(JavaScript)