javascript

javascript

嵌入方式

1.行间事件

<input type="button" name="" onclick="alert('ok!');">

2.页面script标签嵌入

<script type="text/javascript">        
    var a = '你好!';
    alert(a);
</script>

3.外部引入

<script type="text/javascript" src="js/index.js"></script>
注释

1.单行注释

//var a = 1;

2.多行注释

/*
var name = 'xuhaixiang';
console.log(name)
*/
数据类型

1.number
2.string
3.boolen
4.undefined
5.null
6.object

DOM(document object map)
1.window.onload = function(){} 用法

放在头部的js在操作dom元素时,由于页面是从上到下执行,会报错;将javascript语句放到window.onload触发的函数里面,获取元素的语句会在页面加载完后才执行,就不会出错了

2.操作元素属性

2.1 "."操作

<a href="http://www.baidu.com" id="baidu">百度</a>
var oA = document.getElementById('baidu');
//读取属性值
console.log(oA.href,oA.id)
//设置属性
oA.title = '前往百度';
oA.style.color = 'red';
oA.style.fontSize = '15px';

2.2 "[]"操作

<a href="http://www.baidu.com" id="baidu">百度</a>
var oA = document.getElementById('baidu');
oA['title'] = '前往百度';
oA['style']['fontSize'] = '20px';
oA['style'].backgroundColor = 'red';
var test = 'style';
oA[test].backgroundColor = 'blue';

3.属性写法

3.1 html的属性和js里面属性写法一样
3.2 “class” 属性写成 “className”,“classList”
3.3 “style” 属性里面的属性,有横杠的改成驼峰式,比如:“font-size”,改成"style.fontSize"

条件语句
运算符
1.算术运算符: +(加)、 -(减)、 *(乘)、 /(除)、 %(求余)
2.赋值运算符:=、 +=、 -=、 *=、 /=、 %=
3.条件运算符:==、===、>、>=、<、<=、!=、&&(而且)、||(或者)、!(否)
if else
var a = 6;
if(a>6)
{
	console.log('greater');
}
else if(a==6)
{
	console.log('equal');
}
else
{
	consle.log('less');
}
switch
var a = 6;
switch (a){
    case 4:
        console.log(4);
        break;
    case 5:
        console.log(5);
        break;
    default:
        console.log(6);
}
数组
定义创建

1.对象实例创建

var aList = new Array(1,2,3);

2.直接变量创建

var aList = [1,2,'abc'];
多维数组

多维数组指的是数组的成员也是数组的数组

var aList = [[1,2,3],['a','b','c']];
alert(aList[0][1]); //弹出2;
方法

1.获取数组的长度:aList.length;

var aList = [1,2,3,4];
alert(aList.length); // 弹出4

2.用下标操作数组的某个数据:aList[0];

var aList = [1,2,3,4];
alert(aList[0]); // 弹出1

3.join() 将数组成员通过一个分隔符合并成字符串

var aList = [1,2,3,4];
alert(aList.join('-')); // 弹出 1-2-3-4

4.push() 和 pop() 从数组最后增加成员或删除成员

var aList = [1,2,3,4];
aList.push(5);
alert(aList); //弹出1,2,3,4,5
aList.pop();
alert(aList); // 弹出1,2,3,4

5.unshift()和 shift() 从数组前面增加成员或删除成员

var aList = [1,2,3,4];
aList.unshift(5);
alert(aList); //弹出5,1,2,3,4
aList.shift();
alert(aList); // 弹出1,2,3,4

6.reverse() 将数组反转

var aList = [1,2,3,4];
aList.reverse();
alert(aList);  // 弹出4,3,2,1

7.indexOf() 返回数组中元素第一次出现的索引值

var aList = [1,2,3,4,1,3,4];
alert(aList.indexOf(1));

8.slice 切片

var aList = [1,2,3,4];
aList.slice(0,2);
console.log(aList);		//[1,2]

9.sort

var aList = [3,2,1,4];
aList.sort()
console.log(aList);		//[1,2,3,4]

10.splice() 在数组中增加或删除成员

var aList = [1,2,3,4];
aList.splice(2,1,7,8,9); //从第2个元素开始,删除1个元素,然后在此位置增加'7,8,9'三个元素
alert(aList); //弹出 1,2,7,8,9,4
循环
for循环
//for循环数组去重示例
var aList = [1,2,3,2,4,5,6,,7,5];
var aList1 = [];
for(var i=0;i<aList.length;i++){
	if(aList.indexOf(aList[i]) == i){
		aList1.push(aList[i]);
	}
}
console.log(aList1);
while循环
var i = 0;
var aList = [];
while(i<5){
	aList.push(i);
	i++;
}
javascript的组成

1.ECMAscript javascript的语法(变量、函数、循环语句等语法)
2.DOM 文档对象模型 操作html和css的方法
3.BOM 浏览器对象模型 操作浏览器的一些方法

字符串处理

1.字符串合并操作:“ + ”
2.parseInt() 将数字字符串转化为整数
3.parseFloat() 将数字字符串转化为小数
4.split() 把一个字符串分隔成字符串组成的数组
5.charAt() 获取字符串中的某一个字符
6.indexOf() 查找字符串是否含有某字符
7.substring() 截取字符串 用法: substring(start,end)(不包括end)
8.toUpperCase() 字符串转大写
9.toLowerCase() 字符串转小写

类型转换

1.加号和减号的区别
加号不仅代表运算符,字符串拼接也是用加号

console.log('1'+2)	//12
console.log(parseInt('1')+2)	//3
console.log('2'-1)	//1

2.隐式转换"==“和”-"

'3' == 3	//true
'5' - 1	//4

3.NaN 和 isNaN

isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况
console.log(isNaN('123'))	//false
console.log(isNaN('123a'))	//true
console.log(isNaN('a123'))	//true
console.log(isNaN(123)) 	//false
console.log(isNaN(123-1)) 	//false
console.log(isNaN(-1.5)) 	//false
定时器
定时器类型及语法
  • setTimeout 只执行一次的定时器
function func(){
	console.log('一次');
}
var time1 = setTimeout(func,2000);
或者
var time1 = setTimeout(function(){
		console.log('一次');
	},2000);
  • clearTimeout 关闭只执行一次的定时器
function func(){
	console.log('一次');
}
var time1 = setTimeout(func,2000);
clearTimeout(time1);
  • setInterval 反复执行的定时器
function func(){
	console.log('一次');
}
var time1 = setInterval(func,2000);
或者
var time1 = setInterval(function(){
		console.log('一次');
	},2000);
  • clearInterval 关闭反复执行的定时器
	var n = 1;
	var time1 = setInterval(function(){
		console.log(n);
		n++;
		if(n>10){
			clearInterval(time1);	//关闭定时器
		}		
	},1000);
定时器应用实例

1.定时器制作时钟

	<div id="clock">
		clock
	</div>
	function timeShow(){
		var oDiv = document.getElementById('clock');
		var now = new Date();
		// oDiv.innerHTML = now;
		var year = now.getFullYear();
		var month = now.getMonth() + 1;		//javascript的date得到的月份范围0-11,需要加1
		var day = now.getDate();
		var week = now.getDay();
		var hour = now.getHours();
		var minute = now.getMinutes();
		var second = now.getSeconds();
		oDiv.innerHTML = '当前时间是:' + year + '年' + addZero(month) + '月' + addZero(day) + '日 ' + toWeek(week) + ' ' + addZero(hour) + ':' + addZero(minute) + ':' + addZero(second);
	}
	timeShow();
	setInterval(function(){
		timeShow();
	},1000);
	//对于小于10的数字前加0
	function addZero(num){
		if(num<10){
			return '0'+num;
		}
		else{
			return num;
		}
	}
	//将数字0-6转化为星期格式
	function toWeek(num){
		switch(num){
			case 0:
				return '星期日';
			case 1:
				return '星期一';
			case 2:
				return '星期二';
			case 3:
				return '星期三';
			case 4:
				return '星期四';
			case 5:
				return '星期五';
			case 6:
				return '星期六';
		}
	}

2.定时器制作倒计时

	<div class="clock" id="clock">
		clock
	</div>
   var oDiv = document.getElementById('clock');
    function timeleft(){
        var now = new Date();
        var future = new Date(2018,7,15,24,0,0);//Date中的7代表实际中的8月,
        var lefts = parseInt((future-now)/1000);
        var day = parseInt(lefts/86400);
        var hour = parseInt(lefts%86400/3600);
        var min = parseInt(lefts%86400%3600/60);
        var sec = lefts%60;
        str = '距离2016年9月12日晚24点还剩下'+day+'天'+hour+'时'+min+'分'+sec+'秒';
        oDiv.innerHTML = str; 
    }
    timeleft();
    setInterval(timeleft,1000); 
闭包

1.什么是闭包
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回

2.闭包计数器

	var count = (function(){
		var num = 0;
		function add(){
			num++;
			return num;
		}
		return add;
	})();
	console.log(count());	//1
	console.log(count());	//2
	console.log(count());	//3	

3.将一个变量长期驻扎在内存当中,可用于循环中存索引值

	<div>1</div>
	<div>2</div>
	<div>3</div>
	<div>4</div>
	<div>5</div>
	//依次点击打印5,5,5,5,5
	var divList = document.getElementsByTagName('div');
	console.log(divList);
	for(var i=0;i<divList.length;i++){
		divList[i].onclick = function(){
			console.log(i);
		}
	}
	//依次点击打印 0,1,2,3,4
	var divList = document.getElementsByTagName('div');
	console.log(divList);
	for(var i=0;i<divList.length;i++){
		divList[i].onclick = (function(i){
			return function(){
				console.log(i);
			}
		})(i)
	}
	//一次点击打印 0,1,2,3,4
	for(var i=0;i<divList.length;i++){
		(function(i){
			divList[i].onclick = function(){
				console.log(i);
			}
		})(i)
	}	
面向对象
对象创建的俩种方式
  • 直接创建
var obj = {name:'xhx'};
本质就是
var obj = new Object();
obj.name = 'xhx';
  • 构造函数创建
function Person(name){
	this.name = name;
}
var obj = new Person('xhx');

#####prototype与__proto__

![prototype 与 proto 的区别]](https://i.stack.imgur.com/UfXRZ.png)

1.构造函数具有prototype属性,对象没有;
2.对象有__proto__属性,对象的__proto__属性等于该对象的构造函数的prototype

function Foo(){};
var foo = new Foo();
Foo.prototype == foo.__proto__; 	//true

3.构造函数也是对象,该对象的构造函数是Function,所以构造函数也有__proto__属性

function Foo(){};
Foo.__proto__ == Function.prototype;	//true

4.Function是所有构造函数对象的构造函数,Function也是对象,Function对象的构造函数是Function

Function.prototype;		//ƒ () { [native code] }
Function.__proto__;		//ƒ () { [native code] }
Function.__proto__ == Function.prototype;	//true

5.Object构造函数用来生成{}对象,Object构造函数也是对象,该对象的构造函数是Function

var obj = new Object();
console.log(obj);	//{}

Object.__proto__ == Function.prototype;		//true

6.Object.prototype属性对象

//对象的__proto__为其构造函数的prototype,构造函数(Object除外)的prototype的__proto__为Object的prototype
Function.prototype.__proto__ === Object.prototype;		//true
Foo.prototype.__proto__ === Object.prototype;		//true

//Object构造函数的prototype的__proto__为null
Object.prototype.__proto__;		null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值