文章目录
1 js认识
1.1 什么是js
js是基于对象和事件驱动编程前端语言,可以用来改进设计,它是脚本语言,无需编译,直接放到浏览器解析运行
2 js面向对象
2.1 一切皆对象
java对象:某一个事物的具体的实例
js对象:在js中我们可以把任何(基本数据)类型当成对象来使用,包括基本类型,引用类型,函数
//基本类型
var num = 11.11
console.log(typeof num)//number
console.log(num.toFixed(1))//11.1
//引用类型
var num = new Number(12.345)
console.log(typeof num)//object
console.log(num.toFixed(1))//12.3
2.2 js中true和false的判断
当成一个boolean类型
var flag = false
if(flag){
console.log('皮皮怪被打了')
}
js 中所有值的真假性: 0,"",undefined,NaN,null,false(基本数据类型的false)为false,其他值都为true
var flag1 = new Boolean(false)
if(flag1){
console.log('皮皮怪又被打了')
}
2.3 js简单操作
2.3.1三部曲
创建对象
给对象添加属性和方法
操作对象的属性和方法
2.3.2 删除属性
delete obj.name;
delete obj["age"];
2.3.3 迭代/遍历对象成员
for(var p in obj){
console.debug(p);//p为对象的属性名或者函数名字。
//要调用,需要动态调用,把p当做一个动态的变量,使用[]方式
if (typeof jsonObj[p] == 'function') {
jsonObj[p]();//函数的调用需要有()
} else {
console.debug(jsonObj[p]);
}
}
2.4 js的其他内容
hasOwnProperty 判断对象里面是否有属性
函数name它是只读属性 --避免出现笔试题
window里面默认有name 默认值空字符串
this表示当前对象 可以通过apply和call方法去改变this的执向
3 prototype原型
每个类有原型的属性 prototype,通过该属性给类添加属性和方法
User.prototype.eat = function(){
console.log('皮皮虾');
}
每个类的实例原型的属性是共享的–)如果一个类的在原型的属性上面添加方法和字段,当前类的其他的实例共享的
user1.__proto__.sex = 'man';
每个类属性的查找,先从自定义的属性上面找,如果没有,在从原型上面找
4 回调函数和匿名函数
回调函数:等待一段时间有回来执行函数
比如 setTimeout ajax回调
匿名函数:没有名称的函数
写法:
(function(){})()
4.1 用途:
- 如果执行一次 可以使用匿名函数
- 作为参数来传递使用
- 解决作用域污染问题
5 闭包
闭包:函数内使用函数外的变量
闭包使用场景:
- 实现一个只读的属性 --结合匿名函数实现只读
(function(){
var a = 0;
window.getSum=function(){
return a++;
}
})();
console.log(getSum());
console.log(getSum());
a = 10;//window.a
console.log(getSum());
console.log(getSum());
console.log(getSum());
- 函数里面使用函数外变量
6 jquery事件委托
$("#userForm").on('click','a.delete',function(){
alert('111111111111');
})
7 jquery继承
$.fn.setHtml = function(content){
this -->dom 或者jquery
//设值
$(this).html(content);
};