小红书---引用类型(第五)

1.对象字面量语法

  var person={};//与 new Object()相同

  person.name="Nicholas";

  person.age=29;

2.一般来说访问对象的方法有两种

  ①.person["name"]  //"Nicholas"

  ②.person.name    //"Nicholas"

    两者的区别:方括号语法的主要优点是可以通过变量来访问属性,例如:

    var propertyName="name";

    person[propertyName]=Nicholas;

  如果属性中包含会导致语法错误的字符或者属性名使用的是关键字或保留字,也可以使用方括号表示,例如:

  Person["first name"]=“Nicolas”

  通常,除非必须使用变量来访问属性,否则建议使用点

3.var color=new Array(20)

  创建长度为20的数组

4.isArray()方法

  这个方法是确定某个值到底是不是数组

5.数组length的用法

  var colors=["red","blue","green"];

  color.length=2;

  alert(colors[2])  //undefind

  一开始是有3个值,将其设置为2时,会移除最后一项,所以colors[2]会undefined

  colors[colors.length]="black"在数组后添加“black”

6.instanceof 运算符,用来判断一个构造函数的prototype属性说指向的对象是否存在另外一个要检测对象的原型链上

  obj instanceof Object  //true   实例obj在不在Object构造函数中

  ①.function Person(){}

    var p=new Person();

    console.log(p instanceof person);  //true

  ②.继承中判断实例是否属于他的父类

    Student和Person都在S的原型链中

    function Person(){}

    function Student(){}

    var p=new Person();

    Student.prototype=p;  //继承原型

    var S=new Student();

    console.log(S instanceof Student)  //true

    console.log(S instanceof Person)  //true

7.Array.isArray(val)  判断是否为数组类型

 

8.valueOf()  toLocaleString()  join()

  ①.valueOf()可以返回数组中的数值和时间的毫秒数

    valueOf(arr)  //转化完的类型为Object

  ②.toLocaleString() 

    arr=["tom","marry","Ann"];

    console.log(arr.toLocaleString())  //返回  tom,marry,Ann  ,类型为String

  ③.toString()

    console.log(arr.toString())  //返回  om,marry,Ann  ,类型为String

  ④.join()

    var arr1=arr.jion("||")  //tom||marry||Ann

 9.栈

  后进先出,先进后出(LIFO)

10.重排  reverse()和sort()

  reverse()  反转顺序

  sort()  默认升序

11.concat()  连接两个数组

 

12.slice()  截取,相当于新建一个数组

  var colors=["red","green","blue","yellow"];

  var color2=colors.slice(1,3);

  包括开始位置,不包括结束位置,返回 green,blue

13.splice()  删除、插入、替换

  ①.删除  需2个参数,要删除的第一项的位置和要删除的项数,如splice(0,2)会删除前两项;

  ②.插入  需要3个及以上的参数,如:

    splice(2,0,"red","green")  会从当前数组的位置2开始,插入字符“red”和“green”

  ③.替换  可以向指定位置插入任意数量的项,且同时删除任意数量的项,插入项与删除项不必相等

    splice(2,1,"red","green")会删除当前数组的位置2的项,然后从位置2开始插入字符串“red”和"green"

14.index of()

  返回某个指定的字符串中首次出现的位置,没有返回-1

15.迭代方法

  ①.every()  用于检测数组所有元素是否都符合指定条件

    eg:var age=[32,33,12,40];

    function  checkAdult(age){

      return age>=18

    };

    alert(age.every(checkAdult))  // alert     false

  ②.filter()创建一个新数组,数组中元素通过检查指定数组中符合条件的所有元素

    eg:  var  age=[32,33,16,40];

    function checkAdult(age){

      return  age>=18

    };

    alert(age.filter(checkAdult))  //输出32,33,40

  ③.forEach()  用于调用数组中的每个元素并将元素传递给回调函数,没有返回值

    var arryAll = [];
    arryAll.push(1);
    arryAll.push(2);
    arryAll.push(3);
    arryAll.push(4);
    arryAll.forEach(function(e) {
      alert(e);
    })            //分别弹出1,2,3,4

  ④.some()  用于检测数组中的元素是否满足条件的,不会改变原数组,不会对空数组进行检验

    eg:  var  ages=[3,10,18,20];

    function checkAdult(age){

      return   age>=18;

    };

    alert(ages.some(checkAdult))  //true   

  ⑤.map()  返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

    eg:  var numbers=[65,44,12,4];

    function myElement(num){

       return num*10

    };

    alert(numbers.map(myElement))  //650,440,120,40

16.归并方法

  reduce() 方法接受一个函数作为累加器

  空数组不会执行回调函数

  eg:  var values=[1,2,3,4,5];

  var  sum=values.reduce(function(prev,cur,index,array){

  return  prev+cur;

  })

  alert(sum)  //15

  第一次执行回调,prev是1,cur是2,第二次,prev是3 ,cur是3

17.函数声明和函数表达式

  解析器会率先读取函数声明,至于函数表达式必须等到解析器执行到它所在的代码行,才会真正的被执行。

  但   

    alert(sum(10, 10));
    //函数表达式
    var sum = function(num1, num2) {
    return num1 + num2
    }          
  会报错,因为解析器还没读到,alert写在sum后面是正常可执行的
18.作为值的函数
  function callSomeFunction(SomeFunction,SomeArgument){
    return  SomeFuction(SomeArgument);
  }
19.递归
  function  factorial(num){
  if(num<=1){
  return  1
  }else{
  return  num*factoricl(num-1)
  }
  虽然arguments的主要用途是保准函数的参数,但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数
  上述递归,耦合性较高,可写成如下方式
  function factorical(num){
    if(num<=1){
      return 1
    }else{
      return num*arguments.callee(num-1)
    }
  }
20.this
  this引用的是函数执行的环境对象
  eg:  window.color="red";
       var o={color:"blue"};
       function sayColor(){
      alert(this.color)
      }
    sayColor()  //"red"
    o.sayHello=sayColor;
    o.sayHello()  //"blue"
21.call()和apply()
  两者的作用一致,都是吧obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法或者说thisObj[继承了]obj的方法
  唯一区别是apply接受数组参数,call接受的是连续参数
  obj.call(thisObj,arg1,arg2......);
  obj,apply(this.Obj,[arg1,arg2......]);
  call和apply最好的作用是用来扩充作用域
22.substring()从字符串中提取一些字符:
  var s1="some text";
  var s2=s1.substring(2)  //返回  me text
23.match()  可在字符串内检索指定的值或找到一个或多个正则表达式匹配,没有返回null
  var str="Hello world!";  
  document.write(str.match("world")+"<br/>");  //world
  document.write(str.match("worlLd")+"<br/>");  //null
  document.write(str.match("world!")+"<br/>");  //world!

  var str="1 plus 2 equal 3";
  document.write(str.match(/\d+/g));  //1,2,3

24.search() 方法用于检测字符串中指定的字符或检索与正则表达式相匹配的子字符串的位置,没有返回 -1  

  var str="Visit W3School!"
  document.write(str.search(/W3School/))  // 6

25.replace()  替换
  var str="visit Microsoft" ;
  document.write(str.replace(/Microsoft/,"w3School");  //visit w3School
 
 
 
 
 
 
 
 
 
 
    
 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

posted @ 2017-10-25 15:14  莫笑我胡为  阅读(330)  评论(0编辑  收藏  举报