JS高级

1、Javascript面向对象

1.1 -认识js:

(1)什么是js:
js它是一个基于对象事件驱动的前端的编程语言,可以用来改进的设计,比如验证表单
(2)js一切皆对象:
java对象:某一个事物的具体的实例 ;
java基本类型:byte short int long char float double boolean
像js里面基本类型,引用类型 和 函数 都可以看成一个对象
(3)js中true和false的判断
js 中所有值的真假性: 0,"",undefined,NaN,null,false(基本数据类型的false)为false,其他值都为true.

1.2 -js的简单操作:

(1)创建对象:

var obj = new 类();
json: var json={};

(2)对象添加属性方法:

obj.name = "张三";
obj["age"] = 18;//使用[],那么需要使用引号
obj.say = function(){
      console.debug(this.name);
}

(3)删除属性:

    delete obj.name;
    delete obj["age"];

(4)迭代/遍历对象

    for(var p in obj){
         console.debug(p);//p为对象的属性名或者函数名字。
      //要调用,需要动态调用,把p当做一个动态的变量,使用[]方式
if (typeof jsonObj[p] == 'function') {
			jsonObj[p]();//函数的调用需要有()
		} else {
			console.debug(jsonObj[p]);
		}
    }

1.3 -JSON对象和JSON字符串转换

标准的json字符串格式:’{“key”:“value”,“key”:“value”}’// key必须使用双引号,值如果不是数字和boolean类型的也必须双引号
(1)eval表达式:表达式中必须添加()字符串,通过jsonStr.toSource()方法,查看对象源码,发现就有()
(2)window.JSON.parse(jsonStr):必须是标准的json字符串
(3)$.parseJSON(jsonStr):查看jQuery源码,发现jQuery底层就是采用JSON.parse方法,所以也必须是标准的Json字符串

1.4 -对象属性、方法拷贝

for(var key in obj1){
	//判断obj2中是否存储这个属性.
	if(!obj2.hasOwnProperty(key)){
		obj2[p] = obj1[p];  //obj2["address"] = obj1["address"];   p = "address"	
	}
}	

1.5 -JS中的this

(1)this使用场景:对函数或方法所在的那个对象(函数也是对象)进行操作;
(2)this指向的是谁?“谁调用该函数,this就代表谁”

//this表示,谁调用这个方法,this就指向谁。
	var obj1 = {
		"name" : "达康书记"
	};
	function sayHello() {
		return this.name;//谁调用这个方法sayHello,this就代表是谁
	}
	obj1.say = sayHello;//赋值
	console.debug(obj1.say());//达康书记 sayHello是obj1对象在调用,所以this指向了obj1.
console.debug(sayHello());//空字符串   直接调用sayHello,相当于是window.sayHello(),所以this指向window,默认的window的name是空字符

2、Prototype原型

2.1 -什么是prototype

(1)prototype-使您有能力向对象添加属性和方法(原类型)
(2)Javascript中的每一个对象都有一个prototype属性(proto),这个属性是一个引用,这个引用指向对象的原型。对象的实例由两部分组成:
(2.1)对象的自定义属性部分(就是我们的构造函数中定义的属性)
(2.2)对象原型部分,原型也是一个对象,指向对象类型的原型。
可以通过console.dir()来查看对象的目录组成结构。

2.2 -原型共享

(1)同一个类的各个实例的原型(proto)是相等的
(2)同一个类的各个实例的原型(proto)共享

2.3 -对象属性访问过程

(1)对象访问属性,先在自定义部分查找,如果没有找到,就会去在原型上面查找

3、回调函数

(1)回调函数就是一个通过函数(对象)引用调用的函数;

4、匿名函数

(1)什么是匿名函数:没有名字的函数:一般这种函数作为参数进行传递到某一个函数中或者是赋给其他变量
(2)匿名函数作用:
(2.1)如果执行一次 可以使用匿名函数
(2.2作为参数来传递使用
(2.3)解决作用域污染问题

5、闭包

闭包:函数内使用函数外的变量
闭包使用场景:
​ (1)实现一个只读的属性 --结合匿名函数实现只读
(2)函数里面使用函数外变量

6、jQuery事件机制

6.1注册事件

(1)KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲btn").click(fun…("#btn").bind(‘click’,function() // jQuery对象.bind unbind取消绑定
(3)$("#btn").on(‘click’,function() // jQuery对象.on off取消绑定

6.2 -事件委托

(1)事件委托:前面的基本的事件绑定,在功能有一个局限。就是绑定事件的元素,必须是在绑定的时候已知的、存在的。对于以后出现的元素是不起作用,事件委托就可以处理这种情况

6.3 -jQuery事件命名空间

(1)定义:命名空间可以有效地管理同一事件的不同监听器。就是说命名空间可以更加细致的过滤需要增加事件监听的事件源,用来做区分的。简单理解命名空间就是一串字符串

6.4 -jQuery继承

(1)虽然jQuery的功能还是比较全的,但是有时候我们需要一些个性化的功能,所以说我们需要来掌握一下,jQuery的扩展
(2)要想给jQuery对象进行功能扩展,就应该在原型prototype上扩展

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值