JavaScript_day11

day11内容

学习目标
1.数组声明
2.数组序列化
3.栈队列方法
4.myPop
5.reverse反转
6.myReverse

  1. Array类型
    ECMAScript数组和其他语言中的数组都是有序列表,但是有以下特性:
    a.每一项都可以保存任何类型的数据。
    b.数组的大小是可以动态调整。
    c.数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项

    1. 创建方法

      1. 使用Array构造函数
        var arr = new Array();
        var arr = new Array(20); // 预先指定数组的大小
        var arr = new Array(“terry”,“larry”,“boss”); //传入参数
        注意:new 关键字也可以省略,但是尽量不要省略
      2. 使用数组字面量
        由一对包含数组项的方括号表示,多个数组项之间用逗号分隔
        var arr = [“terry”,“larry”,“boss”];
        var arr = [] //空数组
    2. 访问数组元素
      数组变量名[索引]
      1.如果索引小于数组的长度,返回对应项的值
      var arr = [“terry”,“larry”,“boss”];
      arr[0] ; //访问数组中第一个元素,返回值为terry
      2.如果索引大于数组的长度,数组自动增加到该索引值加1的长度
      var arr = [“terry”,“larry”,“boss”];
      arr[3] =“jacky”; //添加元素,数组程度变为4

      数组最多可以包含4 294 967 295个项

    3. 检查数组
      var arr = [];
      typeOf(arr); //返回object
      Array.isArray(arr); //判断arr是否是数组类型

    4. 转换数组为字符串
      数组继承Object方法,并且对这些方法进行了重写
      toLocalString();
      toString(); 在默认情况下都会以逗号分隔字符串的形式返回数组项
      例如:
      var arr = [“terry”,“larry”,“boss”];
      arr.toString() //terry,larry,boss
      valueOf(); 在默认情况下以数组字面量的方式显示(firefox)
      arr.valueOf(); //[“terry”,“larry”,“boss”];
      join(); 使用指定的字符串用来分隔数组字符串
      例如:
      arr.join("||"); //briup||terry||jacky

    5. 栈,队列方法
      1.栈 LIFO (Last-In-First-Out)
      pop() 从数组的末尾移除最后一项,减少数组的length值,返回移除的项
      push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
      2.队列 FIFO (First-In-First-Out)
      shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一。
      unshift() 在数组的前端添加任意个项,并返回新数组的长度。

note

复习
数据类型
5种基本数据类型
undefined null number boolean string
1种引用数据类型
Object
Function
Array
判断数据类型
typeof 关键字
返回值 undefined object number boolean string function
数据类型转换
其他数据类型转换成boolean
Boolean()
!!
undefined,null,0,NaN,’’,false转成false
其他转成true
其他数据类型转换成string
String()
+’’
toString()
undefined和null没有toString()方法。
toString()可以进行进制字符串转换
其他数据类型转成number类型
Number() 一元+
undefined(NaN) null(0) true(1) false(0) ‘’(0) ’ ‘(0)
如果有非数值的字符串->NaN
不识别8进制,识别16进制
parseInt()
取整
可以截取字符串开始的数值到非数值的字符停止,返回之前的数值字符,并且取整
对于undefined,null,true,false,’’,’ ‘转成NaN
不识别8进制,识别16进制
parseFloat()
转成浮点数
可以截取字符串开始的数值到非数值的字符停止,返回之前的数值字符。
对于undefined,null,true,false,’’,’ '转成NaN
不识别8进制,不识别16进制
操作符
+ - * / %
+= -= *= /= %=
< <= > >= == != === !==
++ – 递增或者递减 前置++ --,先++ --,再使用。后置++ --,先使用,再++ –
一元+ - 将其他数据类型转成number
&& 有假则假,如果第一个数是假性值,直接返回第一个数,否则返回第二个数
|| 有真则真,如果第一个数是真,直接返回,否则返回第二个数
! 转成boolean的取反值

m+n
  1.如果m,n都是number,+运算
  2.如果m,n都是除了string的其他基本数据类型,转成number进行+运算
  3.如果有一个是string,另外一个是基本数据类型,进行字符串的拼接
  4.如果有一个是Object类型
    没有重写toString和valueOf,使用原型对象中的toString()返回值。
    重写toString和valueOf,使用重写后的valueOf()返回值。
    只重写了toString(),使用重写后的toString()返回值。
    只重写了valueOf(),使用重写后的valueOf()返回值。
    拿到返回值之后,再与另外一个数进行操作

分支语句
if(){}
if(){}else{}
if(){}else if(){}else{}
switch(test){
case 1:

break;
case 2:

break;
default:

break;
}
循环语句
for(初始条件;结束条件;迭代条件){
//循环体
}
--------------
前测试语句
初始条件
while(结束条件){
//循环体
迭代条件
}
--------------
后测试语句
初始条件
do{
//循环体
迭代条件
}while(结束条件);
--------------
for(var key in obj){
key–>属性名
obj[key]–>属性值
}
对象
声明
构造函数表示
var a = new Object()
对象字面量
var b = {}
属性操作
a.name = ‘tom’;
delete a.name;
a[‘name’]
var str = ‘name’;
a[str]
in 是否是自有属性或者继承属性
hasOwnProperty() 是否是自有属性
propertyIsEnumerable() 是否是可枚举属性
遍历
for-in
函数
声明
函数声明方式
function test(){}
函数表达式方式
var test = function(){}
属性
length–>形参的个数
内部属性
arguments
类数组对象,保存实参。
arguments.length–>实参的个数
arguments.callee 函数本身
遍历arguments for循环
this
指向函数的执行环境对象
修改this指向
test.call(执行环境对象,参数列表)
test.apply(执行环境对象,参数数组)
test.bind(执行环境对象)(参数列表)
test.bind(执行环境对象,参数列表)()
函数运行的方式
test(参数列表);
test.call(执行环境对象,参数列表)
test.apply(执行环境对象,参数数组)
test.bind(执行环境对象)(参数列表)
test.bind(执行环境对象,参数列表)()
变量声明提升和函数声明提升
函数声明会提升到代码的最前边
变量声明会提升到代码的前边
如果变量名与函数名一样,那么同名的变量的声明会被忽略。

值传递和址传递
基本数据类型之间是值传递
var a = 1;
var b = a; 将a的值复制了一份,赋值给b。无论改谁,不影响其他的数据。
引用数据类型之间是址传递,引用传递
var c = {name:‘tom’};
var d = c; 将c的引用地址复制了一份,赋值给d。无论改谁,最终c和d的值是一致的。

原型

每一个构造函数都有一个对应的原型对象
每一个原型对象都有一个对应的构造函数
Object.prototype.constructor === Object;
实例可以调用自己的属性和方法,也可以调用原型对象中的属性和方法。
var obj = {};
obj.toString === Object.prototype.toString

数组
instanceof关键字,是用来判断实例是否是某个构造函数的实例
var obj = {};
console.log(obj instanceof Object);

数组方法
方法名
返回值
参数
改不改变原数组

发布了40 篇原创文章 · 获赞 1 · 访问量 709

猜你喜欢

转载自blog.csdn.net/hanmiao12345/article/details/105517649