JS引入方式:
1、内嵌方式
2、外链方式
js实现幻灯片(图片播放)
常见变量命名:
1、驼峰式
2、帕斯卡:每个单词的首字母大写
3、匈牙利:属性+类型+对象描述 ,G_Str_w3c
window中常用的提示框:
1. alert
2. confirm
3. prompt
数据类型:
1. 原始数据类型
存放在栈中,变量与其值存放在一处
undefined、null、number、string、boolean
2. 引用数据类型-复合数据类型
typeof -- 查看数据类型
条件控制:
if、switch(支持字符串的)、三元运算、
循环控制:
while
do...while
for
for...in 一般在数组或对象中使用 ,直接遍历结果为数组的索引或者对象中的属性名
break
continue
类与对象:
JavaScript类本身也是一种对象。
自定义对象:
var obj = {
name:'tom',
age:2
} ;
或者
var obj = new Object();
obj.name = 'tom';
if(obj.name){.....}
或者
if("name" in obj){.....}
属性获取:
1、使用点操作符 obj.name
2、使用中括号[] obj["name"] --- 可以针对复杂的键问题
静态类:
//此种形式叫对象直接量
var Person = {
name:'jerry',
age:2
} ;
非静态类:
var Car = function(name,color){
this.name = name ;
this.color = color ;
this.say = function(){
alert(this.name);
// 此处的this指向的是当前的对象function(函数也是对象),即指向say ,
// 但是发现say中没有name这个属性,所以就到其父亲那里寻找name,如果找到则使用(this就代表有该属性的对象),否则继续向上一层父亲查找,知道最顶层,如果没有则undefined
};
}
//注意对于非静态类需要先实例化(采用new操作符)才可以访问其内部属性
var car = new Car('bmw','red');
with关键字: --- 尽量少用,容易浪费系统资源
with(obj){
alert(name);
}
this:代表当前对象,对于比较复杂的对象或者调用,如何区分this到底代表谁 —— 谁调用(该方法)则this表示的就是谁。
prototype:
var Car = function(){};
// 通过prototype放入公开属性
Car.prototype.name = 'bmw';
Car.prototype.color = 'red';
Car.prototype.say = function(){};
类属性:
Car.run = function(){};
类方法:
对象属性:
对象方法:
JavaScript中常用内置对象:
1、String
var str = new String('hello world'); // new 方式
var str = "hello world" ; // 对象直接量方式
常用属性与方法:
Global的方法: parseInt parseFloat
str.length
str.charAt(1); //返回指定索引出字符
str.charCodeAt(2);//返回指定索引处的字符的ASCII编码
str.concat('hello','wor','world') ; // 链接字符串
str.indexOf('world'); // 返回首次出现的world的位置
str.lastIndexOf('hello');
str.replace('world','heiheiru');//经常配合正则使用 : str.replace(/o/g,'p'); 全局替换所有o
str.slice(2,6);
str.split('#');
str.substr(2,5)
str.substring();
"HELLO".toLowerCase();
str.toUpperCase()
str.toString();
str.match(regex) ; // 返回正则匹配的所有结果构成的数组
可以利用prototype给String追加其他的方法。
2、Date
var date = new Date() ; // 返回当前日期时间
方法:
getDate() ; // 返回 0-31
getDay() ; // 返回一周中的某一天 0 -6
getMonth(); // 0-11
getFullYear() ;// 返回四位年份 , getYear() 被废弃
getHours() ; // 0-23
getMinutes();
getSeconds(); //
getMilliseconds() ;//
getTime(); //返回从1970年到现在所经过毫秒
Date.parse(dateVal) ; // 返回1970到指定时间的毫秒数
toTimeString() ; // 将Date对象的时间部分转化为字符串
toDateString() ; // 将Date对象日期部分转换为字符串
setDate() ;// 设置日期中月份的某一天(1-31)
setMonth() ;// 0-11
setFullYear() ;// 四位数
setHours() ; // 0-23
setMinutes() ;// 0-59
setTime();// 利用毫秒数设置时间
3、Number
属性:
MAX_VALUE 、MIN_VALUE、NaN 、NEGATIVE_INFINITY 负无穷、POSITIVE_INFINITY正无穷
方法:
toString() ;
toFixed(0-20) : 参数指定数字保留多少位小数
4、Array
属性: length 、prototype
var arr = new Array(1,2,3,4,"a","hello",{x:1,y:3}); // 里面可以放复杂类型的数据,类型不必一致
var arr = [1,2,3,4,"a","hello",{x:1,y:3}] ; // 对象直接量定义方式
concat() ; // 连接不同数组,将多个数组内容放置到一个数组中
var arr1 = [1, 2, 3, 4];
var arr2 = ['a', 'b', 'c'] ;
arr1.concat(arr2); //
join() ; //将数组中的元素通过指定的参数连接起来,返回该字符串。
arr1.toString() // toString默认利用逗号将数组元素连接起来并返回
pop() ; // 返回并删除数组中最后一个元素
push(); //向数组末尾添加一个或多个元素,并返回新的数组长度。
//清空数组
arr = [] ;
或者 arr.push();
unshift() ; //向数组头部添加一个或多个元素
reverse() ; // 颠倒数组元素
shift() ; // 删除数组第一个元素
slice();
splice(index,howMany[,elem]); // 从index开始删除howMany个元素,并添加元素到删除的元素处
sort() // 排序 ,有很多排序算法
sort(); // 无参数时,对数组排序先排序第一位,。。。
sort(function(a,c){if(a > b){return 1}else{return -1}) ; // 自定义排序算法
sort(function(){renturn a-b}) // 从小到大排序
sort(function(){renturn b-a}) // 从大到小排序
自定义算法可以利用数轴来表示: -num ———————————————0————————————————————— +num
返回负数时,就调换俩个元素的位置,返回正数则不调换,如果是零也不调换
5、Math
属性:
E、LN2、LN10、PI、SQRT2 等
方法:
abs(x) ; // 绝对值
ceil(x) ; // 向上舍入 1.1 -》 2 , 1.000 -》 2
floor(x) ; // 向下舍入
round(x) ; // 四舍五入
exp(x); // e的指数
max(x,y,z,....);//返回x y ,z ...中最大的值
min(x,y,z,...)
pow(x,y); // x的y次幂
random() ;// 随机数在0 - 1 之间
6、Function
属性:
arguments 、arguments.length(利用参数个数模拟其他语言的方法重载)
(
function(i){
alert(i);
arguments.callee(++i);
}
)(0);
方法:
arguments.callee()
使用Function对象定义函数 ,最后一个参数作为函数体
var abc = new Function('a','c','c',"alert(a+b+c);");
abc();
7、Global
8、Window
DOM - 文档对象模型
每当浏览器打开一个窗口,就自动构建一个window对象。
DOM
|
window
|
|---------------------------------------------------------|
| | | |
Navigator Screen History Location Document
window的方法:
setTimeout();
clearTimeout();
setInterval();
clearInterval();
Navigator : 主要包含客户端浏览器的信息
判断浏览器类型及版本信息
cookieEnabled --- 判断cookie是否启用
userAgent -- 浏览器信息,一般利用string的match方法筛选所需要的属性信息
Screen :包含了客户端屏幕信息
height、width、avaiHeight、avaiWidth
History: 浏览器当前window的历史记录
length -- 历史记录长度
back();
forward();
go(-/+num);
Location: 包含了当前URL的信息
hash // 设置或返回url锚点(如 : #course2)
href // 设置或返回url
hostname // 设置或者返回当前主机名
pathname // 设置或者返回当前url的路径部分
protocol // 设置或者返回协议
search // 设置或返回查询字符串(包含问号) (不包含锚点部分)
assign() // 加载新的文档
reload() // 重新加载
replace() //新文档替换当前文档
DOM节点操作: 通过document对象操作html文档
访问节点:
getElementById();
getElementsByName(); // 返回数组形式
getElementsByTagName(); // 返回数组
创建节点:
createElement();
creatTextNode();
添加节点:
appendChild(node) ;
insertBefore(newNode,oldNode);
删除节点:
removeChild(node);
获取父节点:
parentNode ;
替换节点:
replaceNode(newNode,oldNode);
使用文档碎片提高js执行效率 : 写js时尽量减少操作DOM,可以一次操作完成就不要多次操作,减少DOM元素的查找。
createDocumentFragment()
表格操作:
caption :
createCaption();
deleteCaption();
thead:
createTHead();
deleteTHead();
tfoot:
createTFoot();
deleteTFoot();
tbody:
rows
insertRow();
deleteRow();
cell:
insertCell();
deleteCell();
DOM元素的属性:
setAttribute(name,value);
getAttribute(name);
removeAttribute(name);
常见如style ,style.cssText
innerText ;
innerHtml ;
outerText;
outerHtml ;
事件 :
HTML事件
onload();
onresize();
onscroll();
键盘鼠标事件
onclick();
ondbclick();
onmousedown();
onmouseover();
onkeypress();
onkeydown();
onkeyup();
表单事件
onfocus();
onblur();
onchange();
onreset();
onsubmit();
Event对象的属性或方法
button - 标识鼠标的左中右三个键
ctrlkey
altkey
shiftkey
type
target
srcElement
screenX/screenY
preventDefault()
stopPropagation() ; // 阻止事件冒泡 不同浏览器有区别
事件流
捕获型事件(由外而内的查找过程)
冒泡型事件(由内而外)
如常用赋值形式的事件 : document.getElementById('btnSubmit').onclick = function(){} ;
事件的绑定是可以覆盖的(同一个事件的先后绑定顺序)
不是所有的事件都能冒泡。以下事件不冒泡:blur、focus、load、unload
//阻止事件冒泡函数
function stopBubble(e)
{
if (e && e.stopPropagation)
e.stopPropagation()
else
window.event.cancelBubble=true
}
事件处理和监听函数
addEventListener(eventName,callback,isbublePop); // 第三个参数指定是冒泡式还是捕获式事件
removeEventListener();
attachEvent();
detachEvent();
Cookie :
cookie的容量不超过4K
添加:
document.cookie = "值" ; 多个cookie值之间使用分号空格分隔
转载于:https://blog.51cto.com/langlichong/1876311