(本章)对象的定义对象(object对)构成介绍

  前言:

  在本章我们首先学习什么是对象,对象是一种无须的数据集合,由若干个“键值对”(key-value)构成。接下来我们介绍js内置对象,分别是:时间对象、Math对象,通过一些例子来详细介绍他们的一些方法。

  什么是对象1.对象的定义

  对象(object)是JavaScript的核心概念,也是最重要的数据类型。

  所谓对象,带有属性和方法的数据类型,一般由若干个“键值对”(key-value)构成。如:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">`var obj = {
   content:"Hello xuzhiwen!"}`</pre>

  大括号定义了一个对象,他被赋值给变量obj,内部包含一对键值对(属性)js中字符串分割,content是“键名”(属性名),字符串“Hello”是“键值”(属性值)。键名与键值之间用冒号分割。如果有多个键值对,每个键值对之间用都好分隔。

  2.键名

  键名加不加引号都可以,前面的代码也可以写成这样:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var obj = {     "content":"Hello xuzhiwen" };</pre>

  3.书写语法

  对象的书写语法,通常有三种:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var obj1 = {}; var obj2 = new Object(); var obj3 = Object.create(null);</pre>

  遮三句话是等价的。一般来说,第一种采用大括号的写法(即对象字面量的写法)比较简洁,第二种采用构造函数的写法清晰表示了意图,第三种写法一般用子啊需要对象继承的场合。

  4.对象的应用

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">`var obj1 = {};var obj2 = obj1;
obj1.a = 1;
obj2.a; //1obj2.b = 2;
obj1.b  //2`</pre>

  上面的代码中,obj1和obj2指向同一个对象,因此为其中任何一个变量添加属性,另一个变量都可以读写该属性。

  当变量是一个原始类型数据时,其值即数据值。如:var num = 1;。

  当变量是一个对象(包括数组等)时,该变量实际上存的是该对象的一个应用。如:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var obj1 = {}; var obj2 = obj1;</pre>

  内置对象

  字符串、数字、布尔值、undefined以及null都是原始类型(primitive)而非对象。而String,Number,Boolean,Object都是语言内置的对象(built-in object),可以通过各自的构造函数得到。

  比如子啊JavaScript中,字符串是一个原始类型,他本身没有属性,当你对一个字符串属性运算得时候(如“somestring”.length),javascript引擎会将该字符串包装成一个对象,该对象是通过String构造函数得到的,也就是说“some string”.length实际上是(newString(“some string”)).length。

  把基本数据类型转换为对应的引用类型的操作称为装箱,比如:newString(”somestring”),将字符串”some string”转换为一个String对象。

  1.对象的属性与方法

  对象的特征叫属性,在对象上执行来实现一些功能的动作叫方法(函数)

  1.1对象的属性

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var message = "Hello World!"; var mlen = message.length; console.log(mlen);</pre>

  1.2对象的方法

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var message = "Hello World!"; var upmess = message.tobpperCase(); console.log(upmess);</pre>

  2.时间对象(Date)

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var nowTime = new Date(); console.log(nowTime);</pre>

  Date()相关方法实现:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var nowTime = new Date();   console.log(nowTime);   var year = nowTime.getFullYear();   var moth = nowTime.getMonth() + 1;   var date = nowTime.getDate();   var h = nowTime.getHours();   var m = nowTime.getMinutes();   var s = nowTime.getSeconds();   console.log(year + '.'+ moth + '.'+ date + '/'+ h + ':'+ m + ':'+ s);</pre>

  返回星期的方法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var now = new Date();   var weekday=["星期天","星期一","星期二","星期三","星期四","星期五","星期六"];   var mynum = now.getDay();   console.log(mynum);   console.log(weekday[mynum]);</pre>

  3.String对象

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var mystr = "Hello Xuzhiwne!" var mylen = mystr.length; var myup =  mystr.toUppercase();//转换为大写mystr.toLowercase();//转换为小写 console.log("字符串的长度:" +mylen); console.log("大写转换后:" +myup); console.log("小写转换后:" +mylow);</pre>

  3.1返回字符串手首次出现的位置

  indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">stringObject.indexOf(substring,startops);</pre>

  参数说明:substring必填的哦,就是你想要搜索的子字符串。

  startpos是可选填的整数参数,规定开始检索的位置,取值范围是0到stringObjuect.length-1。省略的话就从首字符开始检索。

  需要注意的是:indexOf()方法区分大小写。

  如果需要检索的字符串值没有出现,则该方法返回-1.

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var mystr = "I like JavaScript!";   console.log(mystr.indexOf('I'));   console.log(mystr.indexOf('v'));   console.log(mystr.indexOf('v ' ,8));   console.log(mystr.indexOf('a ' ,mystr.indexOf('a') + 1));</pre>

  3.2.返回指定位置字符

  charAt()方法可返回指定位置的自负。返回的字符长度为1的字符串。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">stringObject.charAt(index);</pre>

  参数说明:index必填,表示字符串中某个位置的数字,即字符在字符串中的下标。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var mystr = "I like JavaScript!"; var p = mystr.charAt(7);   console.log(p);</pre>

  3.3.字符串分割

  split()方法将字符串分割为字符串数组,并返回此数组。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">stringObject.split(separator , limit);</pre>

  参数说明:separator必填,从该参数置顶的地方分割stringObject。limit可选参数,分割的次数,如果设置,返回的字串

  需要注意的是:如果把空字符串””用作separator,那么stringObject中的每个字符之间都会被分割。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var mystr = "www.xuzhiwen.com"; console.log(mystr.split(".","2"));</pre>

  3.4.提取字符串

  substring()方法用于提取字符串中介于两个指定下标之间的自负。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">stringObject.substring(satarPos, stopPos );</pre>

  参数说明:starPos必填,一个非负的整数,提取的开始位置;stopPos可选参数,截取的结束位置,如果不填,那么反水的字串会一直到字符串对象的结尾。

  需要注意的是:

  返回的内容是从star开始(包含start位置的字符)到stop - 1处的所有字符,其长度为stop减start

  如果参数start与stop相等,纳闷该方法返回的就是一个空串(即长度为0的字符串)。

  如果start比stop大,那么该方法在提取字串之前会县交换这两个参数。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;"> var mystr = "I like JavaScript!"; console.log(mystr.substring(2 ));   console.log(mystr.substring(2 ,6));</pre>

  3.5提取指定数目的字符串

  substr()方法从字符串中提取从指定位置开始指定数目的字符串。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">stringObject.substr(startPos, length);</pre>

  参数说明:starPos必填的哦,要提取的子串的起始位置,必须是数值:length,可选,只提取字符串的长度,如果省略,则返回从stringObject的开始位置startPos是负数,从字符串的尾部开始算起的位置。也就是说,-1指字符串中最后一个字符,-2指倒数第二个字符,一次类推。

  如果starPos为负数且绝对值大于字符串长度,startPos为0。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;"> var mystr = "I like JavaScript!"; console.log(mystr.substr(2 )); console.log(mystr.substr(2 ,6));</pre>

  4.Math对象

  Math对象是一个可以直接使用的对象,他与其他的对象区别在于,String、Date、Number其实都是函数,都可以当作普通函数、构造函数来用,而Math直接就是一个对象。

  Math有很多直接可用的方法,比如:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">console.log(Math.PI); console.log(Math.abs(-15));</pre>

  4.1取整方法

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">console.log((Math.random()) * 10);   //输出一个0至10之间的随机整数 console.log(Math.round(Math.random() * 10));</pre>

  4.3最大值最小值

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">console.log(Math.min(0.8,6.6, 5, 4.5, -5.1, -5.9)); console.log(Math.max(0.8,6.6, 5, 4.5, -5.1, -5.9));</pre>

  5.数组对象(Date)

  数组定义的方法:

  定义了一个空数组:var数组名=new Array(n);

  定义时指定有n个空元素的数组:var 数组名 = new Array(n);

  定义数组的时候,直接初始化数据:var 数组名 = [,,……];

  我们定义myArray数组,并赋值js中字符串分割,代码如下:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var myArray = [2, 5, 6];</pre>

  说明:定义了一个数组myArray,里边的元素是:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">`myArray[0] = 2;
myArray[1] = 5;
myArray[2] = 6;`</pre>

  5.1数组连接

  concat()方法用于连接两个或多个数组。此方法返回一个新数组,不改变原来的数组。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">array1.concat(array2, array3,...arrayi.....,arrayN);</pre>

  参数说明:array1是要连接的第一个数组,arrayi是后续连接的第i个数组。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">var mya1 = new Array("Hello!"); var mya1 = new Array("I", "love"); var mya1 = new Array("Javascript", "!"); console.log(may1.concat(mya2,mya3)); console.log(mya1);</pre>

  5.2数组连接成字符串

  split()将字符串分割并返回数组;

  join()方法用于把数组中的所有元素放入一个字符串,并返回这个字符串。元素是通过指定的分隔符进行分隔的,不影响原数组。

  使用语法:

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">arrayObject.join(separator);</pre>

  参数说明:separator可选,指定要使用的分隔符,如省略,则用逗号作为分隔符。

  <pre style="font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin-top: 1.2em; margin-bottom: 1.2em;">`var myarr = new Array(3);
myarr[0] = "www";
myarr[1] = "xuwhiwen";
myarr[2] = "com";console.log(myarr.join(".");`</pre>

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1733
0 评论
564

发表评论

!