/*
*js的数据类型总结
*js拥有动态数据类型
*/
//数字类型
var a = 1;
var a = 1.0;
var a = 1e2;
//字符串类型
var a = 'Eric';
//数组
var a = [11,22,33]
//布尔
var a = true;
var a = false;
//js没有确切的字典定义,和字典一样效果的是js对象
var a = {
'name':'Eric',
'age':18,
'height':170
}
//undefined, null
//undefined表示变量不含值
//给变量赋值null可以清空变量
typeof(g); //不存在的变量g,此处打印undefined
var a = null;
typeof(a); //此处打印object 空对象
=========================================
/*
*js序列化和转义
*/
s = {
'name':'Eric'
}
s_2_tring = JSON.stringify(s); //对象转字符串
string_2_obj = JSON.parse(s_2_string); //字符串转对象
h = "http://www.baidu.com?md=麻花藤";
encodeURI(h); //转义中文字符
encodeURIComponent(h) //转义中文字符和所有符号
============================================
/*
*eval和时间操作
*/
//eval是python中eval和exec的功能和
eval("1+2"); //3
eval("if(1==1){console.log('eric');}"); //执行此段代码,结果eric
var ccc = new Date(); //实例化日期类
console.log(ccc); //Sat Jul 07 2018 22:00:43 GMT+0800 (中国标准时间)
ccc.getMinutes(); //get获取
ccc.setMinutes(10); //set设置Sat Jul 07 2018 22:10:43 GMT+0800 (中国标准时间)
============================================
/*
*js的函数类型
***/
//普通函数
function a(name){
console.log(name);
}
a('eric');
//匿名函数,定时器里面是匿名函数
a = setInterval(function(){
console.log('Eric');
}, 3000);
clearInterval(a);
//自执行函数
(function(args){
args += 1
console.log(args);
})(1)
=====================================================
/*
*javascript作用域明白代码
*/
//和python一样以函数内为作用域而非其他语言的代码块内作用域
function a(){
if(1==1){
var name = "Eric"; //代码块内声明变量
}
console.log(name); //可以打印Eric
}
a();
//情况二
name = "Eric"; //声明全局变量
function a(){
var name = 'Tom';
function b(){
var name = "Alice";
console.log(name); //此处打印Alice
}
b();
}
a();
//情况三
name = "Eric"; //声明全局变量
function a(){
var name = 'Tom';
function b(){
console.log(name); //此处打印Tom
}
return b;
}
var func = a();
func();
//情况四
name = "Eric"; //声明全局变量
function a(){
var name = 'Tom';
function b(){
console.log(name); //此处打印Jack
}
var name = "Jack"; //变量作用域在声明阶段已经确定,下面的name重设上面name
b();
}
a();
//情况五
function a(){
console.log(name); //此处打印undefined
var name = 'Eric'; //声明阶段,只是声明了变量名 var name;
}
a();
==================================================================
/*
*面向对象和原型
***/
//创建类的方式一
function Foo(name){
this.name = name;
this.sayName = function(){
console.log(this.name);
}
}
//实例化的时候,内存中有重复的内容
o1 = new Foo('eric');
console.log(o1.name);
o1.sayName();
o2 = new Foo('alice');
console.log(o2.name);
o2.sayName();
//使用原型定义类,避免重复
function Foo(name){
this.name = name;
}
Foo.prototype = {
'sayName':function(){
console.log(this.name);
}
}
//实例化的时候就不会重复开辟空间
o1 = new Foo('eric');
console.log(o1.name);
o1.sayName();
o2 = new Foo('alice');
console.log(o2.name);
o2.sayName();
=============================================
/*
*Dom样式操作
*/
i1 = document.getElementById('i1');
i1.className = "c1 c2"; //设置c1 c2样式
i1.classList; //获取样式的列表形式
i1.className; //获取字符串形式的样式,以空格隔开
i1.classList.add('c3'); //新增c3样式
i1.classList.remove('c3'); //删除c3样式
i1.style.fontSize = '15px'; //精细设置某个样式
i1.style.backgroundColor = 'green'; //设置背景色
=======================================================
/*
*DOM属性操作
*/
i1 = document.getElementById('i1');
i1.setAttribute('xxx', 'Eric'); //设置属性
i1.attributes; //获取标签的所有属性值
i1.getAttribute('xxx'); //获取某个属性
i1.removeAttribute('xxx'); //删除某个属性
=======================================================
/*
*Dom操作标签元素
*/
//增加方式一
tag = '<input type="text">';
i1 = document.getElementById('i1');
i1.insertAdjacentHTML("beforeEnd", tag); //在div最后面添加tag标签
//增加方式二
a = document.createElement('input');
a.setAttribute('type', 'text');
a.style.color = 'red';
i1 = document.getElementById('i1');
i1.appendChild(a);
=============================================
/*
*其他
*/
//可以给页面中的标签绑定onclick事件,在js里找到form并提交
f = document.getElementById('f1');
f.submit();
//打印
alert('123');
console.log('123');
var r = confirm('确实删除吗?'); //点击确定r是true,取消r是false
//URL
location.href //获取当前的URL
location.href = "www.baidu.com" //跳转到百度
location.href = location.href //跳转到自己,相当于刷新当前页面
location.reload() //重新加载
//定时器
var s = setInterval(function(){}, 2000); //一直执行
clearInterval(s); //清楚定时器s
var s1 = setTimeout(function(){}, 2000) //只执行一次
clearTimeout(s1); //清楚定时器s1
=============================================
i1.addEventListener('click', function(){console.log("i1")}, false); //false是冒泡
i2.addEventListener('click', function(){console.log("i2")}, false);
i1.addEventListener('click', function(){console.log("i1")}, true); //true是捕捉
i2.addEventListener('click', function(){console.log("i2")}, true);
/*
*词法分析:
*1、形参
*2、局部变量
*3、函数声明表达式 优先级最高,会覆盖其他
*/
//AO:active object 函数和变量初始化的时候生成的活动对象
function t1(age){
console.log(age); //function
var age = 12;
console.log(age); //12
function age(){}
console.log(age); //12
}
t1(3);