资讯专栏INFORMATION COLUMN

高程3总结#第5章引用类型

Zachary / 3068人阅读

摘要:对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。类型类型来自使用操作符和构造函数同样返回表示日期的毫秒数,但它与在构建时使用不同的信息。类型类型,与布尔值对应的引用类型。

引用类型 Object类型

两种创建Object实例的对象

使用new操作符后跟Object构造函数

var person=new Object();
person.name="Nicholas";
person.age=29;

对象字面量表示法

var person={
  name:"Nicholas",
  age:29
}

Array类型

创建数组的基本方式有两种

使用Array构造函数,new操作符可以省略

var colors=new Array();
var colors=Array(3);

数组字面量表示法

var colors=["red","blue","green"];//创建一个包含3个字符串的数组
var names=[];//创建一个空数组
var values=[1,2,];//创建一个包含2或3项的数组,谨慎操作
var options=[,,,,,];//创建一个包含5或6项的数组,谨慎操作

数组的length不是只读的,可以通过设置这个属性,可以从数组的末尾移除项或向数组或向数组中添加新项

var colors=["red","blue","green"];//创建一个包含3个字符串的数组
colors.length=2;
alert(colors[2]);//undefined
var colors=["red","blue","green"];
colors.length=4;
alert(colors[3]);//undefined

可以使用instanceof确定某个对象是否是数组,但是如果存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数,从其中一个框架向另外一个框架传入数组,那么传入的数组与在第二框架中原生创建的数组分别具有各自不同的构造函数。

Array.isArray()方法解决instanceof方法的问题

if(Array.isArray(value)){
  //对数组执行默写操作
}

push()接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。

pop()从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

shift()从数组开头移除一项,减少数组的length值,然后返回移除的项。

unshift()在数组前端添加人一个项,并返回新数组的长度。

reverse()反转数组项的顺序。返回值是经过排序之后的值。

sort()排序,可以接收一个比较函数作为参数。返回值是经过排序之后的值。

concat()将一个或多个数组添加到结果数组中,如果传递的值不是数组,将会被简单地添加到结果数组的末尾。

var colors=["red","green","blue"];
var colors2=colors.concat("yellow",["black","brown"]);
alert(colors);//red,green,blue
alert(colors2);//red,green,yellow,black,brown

slice()基于当前数组中的一个或者多个创建一个新数组,接收一个或者两个参数指定位置开始到当前数组末尾的所有项,不影响原始数组。

var colors=["red","green","blue","yellow","purple"];
var colors2=colors.slice(1);
var colors3=colors.slice(1,4);
alert(colors2);//green,blue,yellow,purple
alert(colors3);//green,blue,yellow

splice()向数组中部插入项。指定两个参数,删除项。指定三个参数,插入项。指定三个参数,替换项。

var colors=["red","green","blue"];
var removed=colors.splice(0,1);//删除第一项
alert(colors);//green,blue
alert(removed);//red返回的数组中只包含一项

removed=colors.splice(1,0,"yellow","orange");//从位置1开始插入两项
alert(colors);//green,yellow,orange,blue
alert(removed);//返回的是一个空数组

removed=colors.splice(1,1,"red","purple");//插入两项,删除一项
alert(colors);//green,red,purple,orange,blue
alert(removed);//yellow,返回的数组中只包含一项

indexOf()从数组的开头向后查找,lastIndexOf()从数组的末尾开始向前查找。

var numbers=[1,2,3,4,5,4,3,2,1];
alert(number.indexOf(4));//3
alert(number.lastIndexOf(4));//5
alert(number.indexOf(4,4));//5
alert(number.lastIndexOf(4,4));//3
var person={name:"Nicholas"};
var people=[{name:"Nicholas"}];
var morePeople=[person];
alert(people.indexOf(person));//-1
alert(morePeople.indexOf(person));//0

every()对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

filter()对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组

forEach()对数组中的每一项运行给定函数,没有返回值。

map()对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

some()对数组中的每一项给定函数,如果该函数对任一项返回true,则返回true。

reduce()从数组的第一项开始,逐个遍历到最后。

reduceRight()从数组的最后一项开始,向前遍历到第一项。

var value=[1,2,3,4,5];
var sum=value.reduce(function(prev,cur,index,array){
  return prev+cur;
});
alert(sum);//15

var value=[1,2,3,4,5];
var sum=value.reduceRight(function(prev,cur,index,array){
  return prev+cur;
});
alert(sum);//15

Date类型

Date类型来自UTC

使用new操作符和Date构造函数

var now=new Date();
var someDate=new Date(Date.parse("May 25, 2004"));
var someDate=new Date("May 25, 2004");

Date.UTC()同样返回表示日期的毫秒数,但它与Date.parse()在构建时使用不同的信息。Date.UTC()的参数分别是年份、基于0的月份、月中的哪一天、小时数、分钟、秒以及毫秒

var y2k=new Date(Date.UTC(2000,0));
var allFives=new Date(Date.UTC(2005,4,5,17,55,55));

Data.now()返回表示调用这个方法时的日期和时间的毫秒数

toDateString()以特定于实现的格式显示星期几、月、日和年

toTimeString()以特定于实现的格式显示时、分、秒和时区

toLocaleDateString()以特定于实现的格式显示时、分、秒

toLocaleTimeString()以特定于地区的格式显示星期几、月、日和年

toUTCString()以特定于实现的格式完整的UTC日期

getTime()返回表示日期的毫秒数,与valueOf()方法返回的值相同

setTime(毫秒)以毫秒数设置日期,会改变整个日期

getFullYear()取得4位数的年份,如2007而非仅07

getUTCFullYear()返回UTC日期的4位数年份

setFullYear(年)设置日期的年份。传入的年份值必须是4位数字,如2007而非仅07

setUTCFullYear(年)设置UTC日期的年份。传入的年份值必须是4位数字,如2007而非仅07

getMonth()返回日期中的月份,其中0表示一月,11表示十二月

getUTCMonth()返回UTC日期中的月份,其中0表示一月,11表示十二月

setMonth(月)设置日期的月份。传入的月份值必须大于0,超过11则增加年份

setUTCMonth(月)设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份

getDate()返回日期月份中的天数,1到31

getUTCDate()返回UTC日期月份中的天数,1到31

setDate(日)设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份

setUTCDate(日)设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份

getDay()返回日期中星期的星期几,其中0表示星期日,6表示星期六

getUTCDay()返回UTC日期中星期的星期几,其中0表示星期日,6表示星期六

getHours()返回日期中的小时数,0到23

getUTCHours()返回UTC日期中的小时数,0到23

setHours(时)设置日期中的小时数。传入的值超过了23则增加月份中的天数

setUTCHours(时)设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数

getMinutes()返回日期中的分钟数,0到59

getUTCMinutes()返回UTC日期中的分钟数,0到59

setMinutes(分)设置日期中的分钟数。传入的值超过59则增加小时数

setUTCMinutes(分)设置UTC日期中的分钟数。传入的值超过59则增加小时数

getSeconds()返回日期中的秒数,0到59

getUTCSeconds()返回UTC日期中的秒数,0到59

setSeconds(秒)设置日期中的秒数。传入的值超过了59会增加分钟数

setUTCSeconds(秒)设置UTC日期中的秒数。传入的值超过了59会增加分钟数

getMilliseconds()返回日期中的毫秒数

getUTCMilliseconds()返回UTC日期中的毫秒数

setMilliseconds(毫秒)设置日期中的毫秒数

setUTCMilliseconds(毫秒)设置UTC日期中的毫秒数

getTimezoneOffset()返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化

RegExp类型

RegExp类型,g表示全局,i表示不区分大小写,m表示多行模式

var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;

var matches = pattern.exec(text);
alert(matches.index); // 0
alert(matches.input); // "mom and dad and baby"
alert(matches[0]); // "mom and dad and baby"
alert(matches[1]); // " and dad and baby"
alert(matches[2]); // " and baby"

var text = "cat, bat, sat, fat";
var pattern1 = /.at/;

var matches = pattern1.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern1.lastIndex); //0

matches = pattern1.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern1.lastIndex); //0

var pattern2 = /.at/g;

var matches = pattern2.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern2.lastIndex); //3
matches = pattern2.exec(text);
alert(matches.index); //5
alert(matches[0]); //bat
alert(pattern2.lastIndex); //8

Function类型

Function类型

每个函数都是Function类型的实例,而且与其他引用类型一样具有属性和方法。函数时对象,因此函数名实际上也是一个纸箱函数对象的指针,不会与某个函数绑定。函数通常是使用函数声明语法定义的。

function sum(num1,num2){
  return num1+num2;
}

var sum=function(num1,num2){
  return num1+num2;
}

在代码开始执行之前,解析器就已经通过一个名为函数声明提升的过程,读取并将函数声明添加到执行环境中。对代码求值时,JavaScript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以即使声明函数的diamante在调用它的代码后面,JavaScript引擎也能把函数声明提升到顶部。

alert(sum(10,10));
function sum(num1,num2){
  return num+num2
}          
alert(sum(10,10));
var sum=function(num1,num2){
  return num1+num2
}

Boolean类型

Boolean类型,与布尔值对应的引用类型。要创建Boolean对象,可以调用Boolean构造函数并传入true或false值

var booleanObject=new Boolean(true)

Number类型

Number类型

toFixed()方法按照指定的小数位返回数值的字符串表示,toExponential()方法返回以指数表示法表示的数值的字符串形式,toPrecision()方法返回固定大小fixed格式或者exponential格式

var num=10;
alert(num.toFixed(2));//"10.00"
alert(num.toExponential(1));//"1.0e+1"

var num=99;
alert(num.toPrecision(1));//"1e+2"
alert(num.toPrecision(2));//"99"
alert(num.toPrecision(3));//"99.0"

String类型

String类型,使用String构造函数来创建

var stringObject=new String("hello world");

charAt()和chartCodeAt()接收一个参数,返回这个参数位置上的字符

concat()将一个或多个字符串拼接起来

slice()、substr()和substring()返回被操作字符串的一个子字符串

indexOf()和lastIndexOf()从字符串中搜索给定的子字符串

trim()创建一个字符串的副本,删除前置及后缀的所有空格

toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase()

var stringValue = "hello world";
alert(stringValue.charAt(1)); //"e"

var stringValue = "hello world";
alert(stringValue.charCodeAt(1)); // 输出"101"

var stringValue = "hello ";
var result = stringValue.concat("world");
alert(result); //"hello world"
alert(stringValue); //"hello"

var stringValue = "hello world";
alert(stringValue.slice(-3)); //"rld"
alert(stringValue.substring(-3)); //"hello world"
alert(stringValue.substr(-3)); //"rld"
alert(stringValue.slice(3, -4)); //"lo w"
alert(stringValue.substring(3, -4)); //"hel"
alert(stringValue.substr(3, -4)); //""(空字符串)

var stringValue = "hello world";
alert(stringValue.indexOf("o")); //4
alert(stringValue.lastIndexOf("o")); //7

var stringValue = " hello world ";
var trimmedStringValue = stringValue.trim();
alert(stringValue); //" hello world "
alert(trimmedStringValue); //"hello world"

var stringValue = "hello world";
alert(stringValue.toLocaleUpperCase()); //"HELLO WORLD"
alert(stringValue.toUpperCase()); //"HELLO WORLD"
alert(stringValue.toLocaleLowerCase()); //"hello world"
alert(stringValue.toLowerCase()); //"hello world"

var text = "cat, bat, sat, fat";
var pattern = /.at/;
//与 pattern.exec(text)相同
var matches = text.match(pattern);
alert(matches.index); //0
alert(matches[0]); //"cat"
alert(pattern.lastIndex); //0

var text = "cat, bat, sat, fat";
var pos = text.search(/at/);
alert(pos); //1

var text = "cat, bat, sat, fat";
var result = text.replace("at", "ond");
alert(result); //"cond, bat, sat, fat"
result = text.replace(/at/g, "ond");
alert(result); //"cond, bond, sond, fond"

var stringValue = "yellow";
alert(stringValue.localeCompare("brick")); //1
alert(stringValue.localeCompare("yellow")); //0
alert(stringValue.localeCompare("zoo")); //-1

内置对象

Global对象,eval方法就像是一个完整的ECMAScript解析器,只接收一个参数,即要执行的ECMAScript字符串。eval{"alert("hi")"};相当于alert("hi");

对象属性

undefined:特殊值undefined

Date:构造函数Date

NaN:特殊值NaN

RegExp:构造函数RegExp

Infinity:特殊值Infinity

Error:构造函数Error

Object:构造函数Object

EvalError:构造函数EvalError

Array:构造函数Array

RangeError:构造函数RangeError

Function:构造函数Function

ReferenceError:构造函数ReferenceError

Boolean:构造函数Boolean

SyntaxError:构造函数SyntaxError

String:构造函数String

TypeError:构造函数TypeError

Number:构造函数Number

URIError:构造函数URIError

Math对象

min()和max()方法确定最大值和最小值

Math.ceil()、Math.floor和()Math.round()四舍五入相关方法

Math.random()获取随机值

var max = Math.max(3, 54, 32, 16);
alert(max); //54
var min = Math.min(3, 54, 32, 16);
alert(min); //3

alert(Math.ceil(25.9)); //26
alert(Math.ceil(25.5)); //26
alert(Math.ceil(25.1)); //26
alert(Math.round(25.9)); //26
alert(Math.round(25.5)); //26
alert(Math.round(25.1)); //25
alert(Math.floor(25.9)); //25
alert(Math.floor(25.5)); //25
alert(Math.floor(25.1)); //25

var num = Math.floor(Math.random() * 10 + 1);

其他方法

Math.abs(num)返回num的绝对值

Math.asin(x)返回x的反正弦值

Math.exp(num)返回Math.E的num次幂

Math.atan(x)返回x的反正切值

Math.log(num)返回num的自然对数

Math.atan2(y,x)返回y/x的反正切值

Math.pow(num,power)返回num的power次幂

Math.cos(x)返回x的余弦值

Math.sqrt(num)返回num的平方根

Math.sin(x)返回x的正弦值

Math.acos(x)返回x的反余弦值

Math.tan(x)返回x的正切值

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97549.html

相关文章

  • 高程3总结#4变量、作用域和内存问题

    摘要:当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。这样,一直延续到全局执行环境全局执行环境的变量对象始终都是作用域链中的最后一个对象。 变量、作用域和内存问题 基本类型和引用类型的值 基本类型值指的是简单的数据段,而引用类型值值那些可能由多个值构成的对象。 定义基本类型值的引用和引用类型值的方法是类似的,创建...

    xumenger 评论0 收藏0
  • 高程3总结#10DOM

    摘要:类型对象是的一个实例,表示整个页面,而且,对象是对象的一个属性,因此可以将其作为全局对象来访问。删除指定位置的行。创建创建创建第一行创建第二行将表格添加到文档主体中 DOM 节点层次 Node类型 DOM1级定义了一个Node接口,该接口将由DOM中的所有节点类型实现 节点类型由在Node类型中定义的12个数值常量来表示,任何节点类型必居其一 Node.ELEMENT_NODE(...

    ARGUS 评论0 收藏0
  • 高程3总结#16HTML5脚本编程

    摘要:脚本编程跨文档消息传递跨文档消息传送,简称为,指的是来自不同域的页面间传递消息的核心是方法,在规范中,除了部分之外的其他部分也会提到这个方法名,但都是为了同一个目的,向另一个地方传递参数。第一个页面加载时为空 HTML5脚本编程 跨文档消息传递 跨文档消息传送,简称为XMD,指的是来自不同域的页面间传递消息 XMD的核心是postMessage()方法,在HTML5规范中,除了XDM...

    silvertheo 评论0 收藏0
  • 高程3总结#12DOM2和DOM3

    摘要:如果不需要伪元素信息,第二个参数可以输操作样式表类型表示的是样式表,包括通过元素包含的样式表和在元素中定义的样式表表示样式表是否被禁用的布尔值。包括元素的高度可见的水平滚动条的高度上边框高度和下边框高度。显示处理指令节点。 DOM2和DOM3 DOM变化 针对XML命名空间的变化 有了XML命名空间,不同XML文档的元素就可以混合在一起,共同构成格式良好的文档,而不必担心发生命名冲突...

    Acceml 评论0 收藏0
  • 高程3总结#24最佳实践

    摘要:也就是说避免属性查找或其他的操作。简化循环体循环体是执行最多的,所以要确保其被最大限度地优化。代码组织组织代码要考虑到可维护性并不一定是传送给浏览器的最好方式。 最佳实践 可维护性 什么是可维护性的代码 如果说代码是可维护的,它需要遵循以下特点 可理解性——其他人可以接手代码并理解它的意图和一般途径,而无需原开发人员的完整解释。 直观性——代码中的东西一看就能明白,不管其操作过程多...

    zhiwei 评论0 收藏0

发表评论

0条评论

Zachary

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<