js高级课堂笔记

js高级

什么是js

js它是一个基于对象事件驱动的前端的编程语言,可以用来改进的设计,比如验证表单

JS代码就是JavaScript编写的脚本文件的代码。用单独文件保存,扩展名为.JS

js一切皆对象(掌握)

java对象:某一个事物的具体的实例

比如 Person new Person()

java基本类型:byte short int long char float double boolean

像js里面基本类型,引用类型 和 函数 都可以看成一个对象

比如:

			//基本数据类型中  number
			var num = 3.1415926;
			//保存小数点后两位
			console.debug(num.toFixed(2));//3.14
			//typeof 查看对象的数据类型
			console.debug(typeof num);//number
			
			//引用数据类型Number
			var num1=new Number(3.1415926);
			console.debug(num1.toFixed(2));//3.14
			console.debug(typeof num1);//object
			
			var fun = new Function("a","b","return a+b");
			console.debug(fun());//NaN
			console.debug(fun(1,2));//3
			
			//数据类的name为anonymous,不能被更改(名字不公开的; 匿名的)
			//fun.name = "赵日天"; 
			fun.age = 23;
			console.debug(fun)

true和false(掌握)

0,"",undefined,NaN,null,false 这几个值为false ,其他情况为true

			//js 中所有值的真假性:  0,"",undefined,NaN,null,false(基本数据类型的false)为false,其他值都为true.
			var b1=false;
			if(b1){
				console.debug("进不来,因为判断为false")
			}
			
			//此处是引用数据类型,判定为true,能输出
			var b2 = new Boolean(false);
			if(b2){
				console.debug("来来来")
			}
			
			//测试其它的值是否判定为 true
			var b3 = "我是不是true?"
			if(b3){
				console.debug("我是true的,哈哈哈");
			}else{
				console.debug("呜呜呜,我不是true")
			}

对象操作(掌握)

创建对象方式:

var obj = new Object();
var obj1 = {"age":23};
var obj2 =new function_name();

给对象添加属性

			obj.name="名字";	//直接赋值
			obj["age"]=18; 	//使用【】,那么就需要使用引号
			//添加say属性
			obj.say=function(){
				console.debug("我能不能输出呢!!!");//输出不了
			}
			obj.name = "改名字";//把上面额name属性覆盖了
			console.debug(obj);
			
			
			//使用属性和方法
			console.log(obj.name);
			console.log(obj["age"]);
			obj.say();
			//删除属性
			//delete obj.name;
			//console.debug(obj);

使用属性

			console.log(obj.name);
			console.log(obj["age"]);
			obj.say();

json的操作(掌握)

eval()

JSON.parse

$.parseJSON

用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了

JSON.parse()解析的必须是json格式的字符串要不报错,而eval()则没有这么严格

js的其他内容(理解)

hasOwnProperty 判断对象里面是否有属性

函数name它是只读属性 --避免出现笔试题

window里面默认有name 默认值空字符串

this表示当前对象 可以通过apply和call方法去改变this的执向

## prototype原型(掌握)

(1) 每个类有原型的属性 prototype,通过该属性给类添加属性和方法

User.prototype.eat = function(){
				console.log('这个static的吃能不能输出呢?好烦呀!');
			}

(2) 每个类的实例原型的属性是共享的–)如果一个类的在原型的属性上面添加方法和字段,当前类的其他的实例共享的

user1.__proto__.sex = 'man';

(3)每个类属性的查找,先从自定义的属性上面找,如果没有,在从原型上面找

## 回调函数和匿名函数

回调函数:等待一段时间有回来执行函数

​ 比如 setTimeout ajax回调

setTimeout(doHandle,3000);
			function doHandle(){
				alert(123);
			}
			alert(1);

匿名函数:没有名称的函数 (掌握)

写法:

(function(){})()

用途(掌握):(1)如果执行一次 可以使用匿名函数

​ (2)作为参数来传递使用

​ (3)解决作用域污染问题

闭包(面试题)

闭包:函数内使用函数外的变量

闭包使用场景:

​ (1)实现一个只读的属性 --结合匿名函数实现只读

	  (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());

​ (2)函数里面使用函数外变量

jquery事件委托(掌握)

$("#userForm").on('click','a.delete',function(){
				alert('事件委托成功1');
})

事件命令空间(了解)

$(function(){
			
			//事件命名空间--了解
			$("#myBtn").on('click.btn1',function(){
				alert('111');
			});
			
			$("#myBtn").on('click.btn2',function(){
				alert('222');
			});
			
			$("#myBtn").off('click.btn2');
			
			
		})

jquery继承(掌握)

$(function(){
			
			/**
			 * java 继承:体现在子类和父类之间,子类可以继承父类里面的属性和方法
			 * 继承: jquery的继承:可以扩展功能
			 * jquery想实现继承:可以通过prototype
			 * 
			 * jQuery.fn == jQuery.prototype == $.fn
			 * 		
			 */
			//我给jquery这个框架扩展的方法
			$.fn.setHtml = function(content){
//				this -->dom 或者jquery
				//设值
				$(this).html(content);
			};
			
			$.fn.getHtml = function(){
				//获取值
				return $(this).html();
			}
			
			//$("#hello").setHtml('你好,师姐!);
			
			console.log($("#hello").getHtml());
		})
			<div id="hello">继承世界??</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值