码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript学习笔记(第四章——第六章)

时间:2015-07-14 17:51:01      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

时间戳(2015-06-09 20:58:00)

第四章:变量、作用于和内存问题

 

         typeof判断元素是什么类型

 

         instanceof检测引用类型对象是否未指定类型

         注:所有引用类型皆为Object的实例

 

         JavaScript没有块级作用域:

                   例1:

                           

if(true){

                                     var color = “blue”;

}

 

alert(color);               // blue

 

                   例2:

                  

for(var i=0;I < 10; i++){

             doSomething();

}

    

alert(i);                       // 10

 

 

第五章:引用类型

 

         Object类型:

                   例一:

                  

var person = new Object();

                         person.name = “Clown”;

                         person.age = 100;

 

                   例二:

                  

var person = {

               name: “Clown”,

               age: 100

};

 

 

         Array类型:

 

                   例一:

                       var colors = new Array(3);  // 初始化长度

                      var names = Array(“Greg”);  // 初始化数组、并可以不写new

                var colors = [“1”,”2”,”3”];  // 这个鸟样子

 

注:Array的长度由length属性控制,如果数组长度为10,设置 array.length = 5;后,数组[5]~数组[9]将不存在。例如:

var ary = new Array("1","2","3");

                 alert(ary.length);  // 3

                 ary.length = 1;

                 ary[200]="321"; 

                 alert(ary.length);  // 201

其中[1]~[199]数组皆为undefined

 

                   例二:

                   以栈(LIFO)形式添加删除元素

                  

var ary = new Array();

                       ary.push(“A”);  // A

                       ary.push(“B”);  // A B

                       ary.push(“C”);  // A B C

                       ary.pop();  // A B

 

                   例三:

                   以队列(FIFO)方式添加删除

                  

var ary = new Array();

                       ary.push(“A”);  // A

                       ary.push(“B”);  // A B

                       ary.push(“C”);  // A B C

                       ary.shift();  // B C

 

                   注:unshift与shift相反,它可以在数组前端加入元素。

 

                   数组重排序:

 

                  reverse():倒序数组

 

sort():从小到大排序(以字符串的方式比较、即使数组皆为数值也会调用toString()后比较)

 

注:sort比较的时候10会排放到5之前

 

时间戳(2015-06-12 23:43:00)

操作数字:

 

concat():复制数组

         var ary = new Array("1","2","3");

         var ary2 = ary.concat();   // 1,2,3

         var ary3 = ary.concat("4","5","6");          // 1,2,3,4,5,6

 

slice(start,end):截取数组

         var ary = new Array("1","2","3");

         var ary2 = ary.slice(0,2);  // 1,2

 

splice():在数组中部插入、删除、替换元素

var ary = new Array("1","2","3");

         ary.splice(1,1);          // 从1位置开始删除1个长度

    ary.splice(2,0,"2.5");        // 从2位置前删除0元素并插入2.5

         ary.splice(2,1,"2.5");        // 从2位置前删除1个元素并插入2.5

 

indexOf():从数组的头开始查找

 

lastIndexOf():从数组尾开始查找

 

迭代方法(5种迭代):

 

every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,如其中有一个返回false或不返回则终止迭代。

var ary = new Array("A","B","C");

  var b = ary.every(function(item,index,array){alert(item);alert(index);alert(array);return true;});

 alert(b);  // true

 

 

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

var ary = new Array("A","B","C");

         var a = ary.filter(function(a,b,c){

                   if(b%2==0){

                            return true;

                   }else{

                            return false;

                   }

         });

         alert(a);  // A,C

 

forEach():对数组中的每一项运行给定函数。这个方法没有返回值

 

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

 

var ary = new Array("A","B","C");

         var a = ary.map(function(a,b,c){

                   if(b%2==0){

                            return true;

                   }else{

                            return false;

                   }

         });

         alert(a);   // true,false,true

 

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

var ary = new Array("A","B","C");

         var a = ary.some(function(a,b,c){

                   if(b%2==0){

                            return true;

                   }else{

                            return false;

                   }

         });

         alert(a);   // true

 

归并方法:

 

reduce():方法从数组的第一项开始,逐个便利到最后,传入reduced方法的函数接收4个参数:前一个值、当前值、项的索引、数组对象。所以第一次循环是从数组的第二项开始的。

        

var ary = new Array("A","B","C");

         var sum = ary.reduce(function(perv,cur,index,arr){

                   alert(perv);

                   alert(cur);

                   alert(index);

                   alert(arr);

                   return perv+cur;  // 会把上一次的返回值作为下一次的perv出入下次循环

         });

         alert(sum);

 

         reduceRight():会reduce一样,只是从数组最后一项开始循环。

 

Date类型:

 

         声明Date:

         var d = new Date();           // 会自动初始化为当前系统时间(UTC)

 

         声明并初始化:

         var d = new Date(Date.UTC(2015,05,12,23,23,00));      // 月从0开始,故此处月份为6

 

         常用的方法:

        

方法

说明

getTime()

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

setTime(毫秒)

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

getFullYear()

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

getUTCFullYear()

返回UTC日期的4位数年份

setFullYear(年)

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

setUTCFullYear(年)

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

getMonth()

返回日期中的月份,其中0表示1月,11表示12月

getUTCMonth()

返回UTC日期月份,其中0表示1月,11表示12月

setMonth(月)

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

setUTCMonth(月)

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

getDate()

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

getUTCDate()

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

setDate(日)

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

setUTCDate(日)

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

getDay()

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

getUTCDay()

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

getHours()

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

getUTCHours()

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

getMinutes()

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

getUTCMinutcs()

返回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.在某地进入夏令时的情况下,这个值会有所变化

 

 

时间戳(2015-06-22 22:06:00)

程序人生、无论技术能力如何、只要你想吃这口饭就逃避不了“永远学习”的命运。

第六章:面向对象的程序设置(本章较为重要、但寡人没仔细看)

 

构造函数模式:

        

         function A(a,b,c){

                   this.name = a;

                   this.age = b;

                   this.sex = c;

                   this.sayName = function(){

                            alert(this.name);

                  }

         }

         var a = new A(‘Clown‘,22,0);

         alert(a.sex);

         a.sayName();

        

         注:一般对象命名第一个字母为大写(驼峰式命名)

 

原型模式:

         每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例和方法.使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。

        

function Person(){

         }

 

         Person.prototype.name = ‘Clown‘;

         Person.prototype.age = 22;

         Person.prototype.sayName = function(){

                   alert(this.name);

         }

         var p = new Person();

 

         注:使用delete(p.name);可以删除实例属性,重新访问原型中的属性。(PS:如果实例属性存在可会阻止访问原型属性)。

 

原型与in操作符:

         判断实例对象中是否存在属性(原型属性或实例属性)

        

function Person(){

 

         }

 

         Person.prototype.name = ‘Clown‘;

         Person.prototype.age = 22;

         Person.prototype.sayName = function(){

                   alert(this.name);

         }

         var p = new Person();

         alert(‘name‘ in p);    // true

         alert(‘tel‘ in p);          // false

JavaScript学习笔记(第四章——第六章)

标签:

原文地址:http://www.cnblogs.com/clownhome/p/4645810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!