JAVA笔记:JavaScript高级

1.JS面向对象

1.JS一切皆对象

(1) 在JS中基本数据类型、引用数据类型、函数等,都可以看成是对象。

var num1 = 19.18999;
var num2 = new Number(3.1415926);
var func = new Function("a","b","return a*b");
console.log(func(10,20));  //200

2. true和false的判断

(1) 0,"",undefined,NaN,null,false都可以表示false,除此之外都为true

var b2 = new Boolean(false);
			if(b2){
				console.log('进来了吗');//会打印
			}
			if(123){
				console.log('真的是true吗1');//会打印
			}
			if("哈哈哈"){
				console.log('真的是true吗2');//会打印
			}

3. 创建对象

1.创建对象

var obj1 = new Object();
var obj2 = {"name":"小明","age":20};
function Person(){}
var p = new Person();

2.添加属性

obj1.name="小王";
obj1.age=18;
obj1["sex"]="男"
obj1.say= function(){
	alert("说点啥呢")
}

3.使用属性

obj1.say()
console.log(obj1.name)
console.log(obj1.age)

4.删除属性
删除对象属性使用delete 对象名.属性名;
js移除标签属性
document.getElementById(“标签ID”).removeAttribute(“标签属性名”)
jQuery移除标签属性
$(“标签名”).removeAttr(“标签属性名”)

5.遍历对象

for(var key in obj1){
	if(typeof obj1[key]=="function"){
		obj1[key]()
	}else{
		console.log(obj1[key])
	}
}

4. JSON

var j = '{"name":"小明","age":18}'
console.log(typeof j)//string
var json1 = eval("("+j+")")
console.log(json1)
//必须是标准的JSON格式
var json2 = JSON.parse(j)
console.log(json2)
//底层也是JSON.parse()
var json3 = $.parseJSON(j)
console.log(json3)

5. JS的其他内容

  1. JavaScript中没有为我们提供像Java中定义类的关键字class。我们定义类只需要定义这个类的"构造函数"即可,构造函数与普通函数没区别,函数名首字母最好大写。
  2. hasOwnProperty() 判断对象里面是否有属性。
    拷贝属性:
for(var key in obj1){
		//判断obj2中是否存储这个属性.
		if(!obj2.hasOwnProperty(key)){
			obj2[p] = obj1[p];
		}
	}	
  1. 函数中的name是一个只读属性,window里面name 默认值为空字符串,我们可以给它进行赋值
  2. this表示当前对象,apply()和call()可以改变this的指向

6. prototype原型

一般是先写构造方法,当我们完成业务代码到一定阶段的时候,突然发现需要扩展一个功能,这个时候,不建议去修改原有的代码,使用原型共享。
有些时候,需要扩展一些系统的类的功能,我们改不了,使用原型共享。
使用对象的属性时,先在自身上找,没有找到再去原型上找

7. 回调函数

回调函数就是一个通过对象引用调用的函数;
如果你把函数的引用作为参数传递给另一个函数,当这个引用被用来调用其所指向的函数时,我们就说这是回调函数。
setTimeout() 、ajax回调

8. 匿名函数

三种写法:
1.(function(){})
(function(a,b){return a*b})(10,20);
2.~function(){}
3.+function(){}
用途:
1.如果只需要执行一次,可以使用匿名函数
2.作为参数传递来使用
3.解决作用域污染问题

9. 闭包

函数内部使用函数外部的变量。
闭包加匿名函数实现属性的只读

(function(){
	var a = 1;
	window.hello=function(){
		return a++;
	}
})();
console.log(hello());
console.log(hello());
//
var a = 10;
console.log(hello());
console.log(hello());
console.log(hello());

10. jQuery事件委托

事件绑定必须是在绑定的时候存在的。对于后面通过代码添加的元素是不起作用的,这时就需要使用事件委托来处理。

11. jQuery事件命名空间

$("#btn1").on("click.bt1",function(){})
$("#btn1").on("click.bt2",function(){})
$("#btn1").off("click.bt1");//取消.bt1事件

12. jQuery继承

拓展功能:要想给jQuery对象进行功能扩展,就应该在原型prototype上扩展,jQuery底层就是这样实现的
jQuery.fn = jQuery.prototype=$.fn

$.fn.setHtml = function(content){
	$(this).html(content);
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值