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