JavaScript高级程序设计(笔记一)

QQ接受的文件:d:我的文档——tencent files 821709846 -filerecv


html5:用于绘画的canvas;video、audio;article、footer、header、nav、section.
表单控件:date、time、email、url、search、calendar;




严格模式
" use strict"


所有语句一般都要有分号结尾;




var message = "hi",
    found = false,
    age = 29;
这样提高可读性;
基本数据类型:
Undefined
Null
Boolean
Number
String


typeof 操作符主要用于检测基本类型
若是一个对象或null 则返回“object”;



 
instanceof 操作符主要用于检测引用类型
alert(person instanceof Object)  //变量person 是 Object ?是则返回true,






1:判断一个数是不是位于最大数和最小数之间
使用isFinite()函数
var result = 1000;
alert(isFinite(result));  // true


2:isNaN()
判断这个参数是不是“不是数值”
不是数值则为true
是数值则为false
alert(isNaN(NaN));  //true
alert(isNaN(10));   //false
alert(isNaN('blue'));  //true
alert(isNaN(true));  //false
    
var num1 = Number("hello world!");  //NaN
var num2 = Number(" ");             // 0
var num3 = Number("0000011");       //11
var num4 = Number(true);            //1


var num1 = parseInt("123blue");     //123
var num2 = parseInt('');            //Nan
var num3 = parseInt("oxA")          //10十六进制
var num4 = parseInt(22.5);          // 22
var num5 = parseInt("o70");         //56 八进制
var num6 = parseInt('70');          //70


在ecmascript5中parseInt()已经不具有解析八进制值得能力了
因此需要传入第二个参数
如:
var num = parseInt('oxAF', 16);   //175
也可以这样
var num = parseInt('AF', 16);    //175
var num1 = parseInt("10",2);     //2
var num2 = parseInt("10", 8);    //8
var num3 = parseInt("10", 10);    //10




parseFloat()只能解析十进制值,因此没有第二个参数可选。


3:转换字符串


var age = 11;
var ageAsstring = age.toString();   //字符串 11 
var found = true;
var foundAsString = found.toString();   //字符串 true


var num = 10;
alert(num.toString());     //"10"
alert(num.toString(2));    // "1010"


4:object类型


var o = new Object();


object 具有下列属性和方法


constructor :保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)


hasownproperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
eg:o.hasownproperty("name")






for-in;


eg:
for (var proName in window) {
document.write(proName);
}


arguments对象,类数组。
function hello(){
alert("this is :" + arguments[0] + arguments[1]);
}
作用域














创建Object实例的方法有两种



检测数组


if(Array.isArray(value)) {
    //do something
}
转换方法
var colors = ['red', 'blue', 'green'];
    alert(colors.toString());  // red,blue ,green  这是一个字符串。
    alert(colors.valueOf()[0]);  //red    返回的是一个数组。
 alert(colors.join("~~")); 用作分隔符


栈方法


栈是一种LIFO(后进先去)的数据结构。


push()可以接受任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后的数组长度。
pop()从数组末尾移除最后一项,减少数组的长度值,然后返回移除的项。




var colors = ['red', 'blue', 'green'];
var count = colors.push('yellow', 'black');
    alert(count);  //5;
    var item = colors.pop();
    alert(colors.length);  //4


队列方法
队列是FIFO(先进先出)
shift()他能够移除数组中的第一个项,并返回该项,同事数组的长度减一。
unshift()在数组前端添加任意个项,并返回数组的长度。


重排序


reverse()和sort()


reverse()方法会对反转数组项的顺序


 var values  =[1,2,3,4,5];
 values.reverse();
alert(values);  //5 4 3 2 1


sort排序





操作方法


concat()
可以基于当前数组中的所有项,创建一个新数组。







slice()方法


删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。
eg:splice(0, 2)会删除数组中的前两项。


插入:可以向指定位置插入任意的项,只需提供3个参数:起始位置,0(要删除的项数)和要插入的项。
eg:splice(2, 0,“red”,'green')会从当前数组的位置2开始插入字符串‘red’和‘green’。


替换: 可以向指定位置插入任意数量的项,同时删除任意数量的项。需要3个参数。起始位置,要删除的项数和要插入任意数量的项。
eg:splice(2,1,‘red’,‘green’)会删除当前数组位置2 的项,然后再从位置2开始插入字符串‘red’和‘green’。


splice()方法始终会返回一个数组,改数组中包含从原数组中删除的项。


位置方法:







迭代方法


every():对数组中每一项运行给定的函数,如果该函数对每一项都返回true,则返回true。
filter():对数组中的每一项运行给定的函数,返回函数会返回true的项组成的数组。
forEach(): 对数组中的每一项运行给定的函数,这个方法没有返回值。
map():对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定的函数,如果该函数对任一项返回true,则返回true。
以上方法都不会修改数组中的包含的值。







Date 类型


RegExp 类型


Function 类型





没有重载







作为值得函数





按某种方式进行排序







递归调用


function faction(num) {
    if(num <= 1) {
        return 1;
    } else {
        return num * faction(num - 1);
    }
}
//    这方法对函数名的耦合性太高,可以使用arguments.callee
    function faction(num) {
        if (num <= 1){
            return 1;
        } else {
            return num * arguments.callee(num - 1);
        }
    }




函数属性和方法




每个函数都包含两个非继承而来的方法:apply()和call()方法。


   




基本包装类型


var obj = new Object('some text');
alert(obj instanceof String);   //true




内置对象


Global对象


Math对象


var values = [1,2,3,4,5,6,7,8];
var max = Math.max.apply(Math, values);


舍入方法


Math.cell() 向上取整
Math.floor()  向下取整
Math.round() 执行四舍五入




random()方法


值 = Math.floor(Math.random() * 可能值得总数 + 第一个可能的值)


function selectFrom(lowerValues, upperValues) {
var choices = upperValues - lowerValues + 1;
return Math.floor(Math.random() * choices + lowerValues);
}
var num = selectFrom(2, 10);
alert(num);


2016年1月29日


JavaScript高级程序设计


面向对象程序设计///


创建对象的最简单方式就是创建一个Object的实例,然后在为他添加属性和方法。




//   工厂模式
    function createPerson(name, age, job) {
        var o = new  Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayname = function() {
            alert(this.name);
        };
        return o;
    }
    var person1 = createPerson('zhb', 20, 'worker');
    person1.sayname();



可以无数次的调用这个函数,每次返回包含三个属性一个方法的对象。工厂模式解决了创建多个相似对象的问题,但是没有解决对象识别的问题(即怎样知道一个对象的类
型)。




//   构造函数模式
    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayname = function() {
            alert(this.name);
        };
    }
    var person1 = new Person('zhb', 20, 'worker');
    var  person2 = new Person('wll',10, 'Doctor');
    person1.sayname();
    /*函数名Person的首字母应大写,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以
    一个小写字母开头*/
其中:
this.name = sayname;
function sayname() {
alert(this.name);
}







2016年2月1日


第六章看完。
开始——193


2016年2月2日
十三章——事件对象





   
   



1111









你可能感兴趣的:(前端)