构造函数原型,继承、原型链、conlose对象及异常处理
1构造函数
每一个构造函数都有一个construction(构造器);
调用对象的construction偶可以获取到对象的构造函数,这个属性是原型对象提供的
2、函数有一个name属性,通过该属性可以获取函数的名称,需要注意的是IE8及以下的版本不支持该属性
3、组合继承通过for循环来实现 使用in关键字
语法:for(var k in 被继承对象名称){
对象名称[k]=被继承对象[k]
}
4、原型继承: 语法:继承对象.prototype=new 被继承对象
任何一个对象都有一个原型对象,原型对象也有原型对象,对象的原型一直往上走,直到找到null为止;
Object.prototype处于顶层
5、原型链每个构造函数都有原型对象每个对象都有构造函数
每个构造函数的原型都是一个对象那么这个原型对象也会有构造函数
那么这个原型对象的构造函数也有原型对象这样就会形成一个链式结构,称之为 原型链
6、函数表达式:
var ff=function(){}
qubie:函数声明如果放在if-else的语句中,在IE8的浏览器中会出现问题,执行的是后面的else
7、this指向
(1)普通函数的this是window
Eg: function(){console.log(this);}
(2)定时器中的this是window
setInterval(function(){console.log(this);},1000);
(3)构造函数中的this 是实例对象
function Person(){console.log(this);} var per=new Person(); console.log(per);
(4)对象的方法中的 this 也是实例对象
function Person(){
console.log(this);
this.sayHi=function(){
console.log(this);
}
}
var per=new Person();
console.log(per);
(5)原型对象中的this 也是 实例对象
Person.prototype.eat=function(){
console.log(this);
}
per.eat();
函数是对象,对象不一定是函数
// 对象中有proto原型,是对象
// 函数中有prototype原型,是对象
8、数组中函数的调用
重点: 要知道 输出函数类型的时候 是function, 所以function是一种数据类型
var arr=[
function (){},
function (){},
function (){}
];
arr.foreach(function(ele){
ele();
})
9、递归
什么是递归?
是指函数中调用函数自己 , 就是递归, 递归一定要具备结束的条件;
10.异常处理
在js中使用try catch finally语句来处理异常
try:捕获异常,将可能出现异常的代码放到try中
catch():捕获并处理异常可以获取到异常的详细信息,括号要穿参数,浏览器已经捕获到参数 ,我们只需要接收
一般用e或exception接收
finally:将无论如何都要执行的代码放在finally中,处理异常是为了让程序正常执行
try{可能出现异常的程序}catch(接收){}finally{}
try要配合catch或者是finally一起使用
11、异常处理
我们可以使用throw抛出异常,自定义错误,事实上,我们可以抛出任何对象
Error表示异常错误,它有两个基本属性;
message表示异常的详细信息
name指Error对象的构造函数
自定义异常:throw new Error(自定义错误)
<script type="text/javascript">
//自定义异常
if(true){
throw new Error('就想出个错');//返回Uncaught Error: 就想出个错
}
</script>
12、Console 对象方法
console.log() 用于在 console 窗口显示普通信息。
console.warn() 用于在 console 窗口显示警示信息。
console.error() 用于在 console 窗口显示错误信息。
console.info() 用于在 console 窗口显示提示类信息。
console.table 方法可以将复合类型的数据转成表格。复合类型的数据转成表格,必须拥有主键。
console.dir() 对一个对象进行检查。
console.assert() 验证某个条件是否为真。
console.time(),console.timeEnd() 用于计算一个操作花的时间。
console.clear() 对 console 窗口进行清屏。
console.debug用于输出调试信息