JS高级学习历程-12

冒充继承

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html>
 3     <head>
 4         <title>11-冒充继承</title>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <meta name="description" content="" />
 7         <meta name="keywords" content="" />
 8
 9         <script type="text/javascript">
10         //冒充继承
11         function Cat(){
12             this.weapon = "伶牙俐齿";
13             this.climb = function(){
14                 console.log(‘在爬树‘);
15             }
16         }
17
18         function Tiger(){
19             //如果在这个地方把Cat构造函数的代码给执行一次
20             //这样Tiger的对象也会拥有Cat对应的成员
21             //window.Cat();
22             Cat.call(this);//this就是north的指引,这样Cat函数内部的this就是north
23             this.color = "yellow and black";
24             this.weight = 200;
25         }
26
27         var north = new Tiger;
28         console.log(north);
29         //该方式没有复制继承灵活,每实例化的对象都会用户全部的成员。
30         </script>
31
32         <style type="text/css">
33         </style>
34     </head>
35
36
37     <body>
38     </body>
39 </html>

11-冒充继承

该方式没有复制继承灵活,每实例化的对象都会用户全部的成员。

【多态】

在php里边,工厂设计模式可以体现多态,

在java里边,许多同名的方法也可以体现多态。

在javascript里边可以通过this关键字体现多态。

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html>
 3     <head>
 4         <title>12-this关键字体现多态</title>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <meta name="description" content="" />
 7         <meta name="keywords" content="" />
 8
 9         <script type="text/javascript">
10
11         var name = "kitty";
12         var age = 10;
13
14         function Cat(){
15             console.log(this.name+"--"+this.age);
16         }
17         Cat();//kitty--10
18
19         var bosi = {name:‘波斯猫‘,age:13,color:‘black‘};
20         //给bosi对象增加成员方法,让其指向上边的Cat函数
21         bosi.express = Cat;
22         bosi.express();//波斯猫--13
23
24         function Wolf(){
25             this.name = "sevenwolf";
26             this.age = 19;
27             this.eye = "闪闪发光";
28         }
29         var seven = new Wolf;
30         seven.say = Cat;
31         seven.say();//sevenwolf--19
32
33         var pig = {name:‘花猪‘,age:1.5,hobby:‘sleep‘};
34         Cat.call(pig);//花猪--1.5
35
36         </script>
37
38         <style type="text/css">
39         </style>
40     </head>
41
42
43     <body>
44     </body>
45 </html>

12-this关键字体现多态

通过this体现多态效果

【异常】

异常:Exception

try{

}catch(Exception e){

}finally{

}

异常:(有别于正常的状体)其不是具体错误,程序一开始开发没有任何问题,运行时间较长了,运行参数和运行的信息发生了变化,导致后边代码出现了错误。

1 异常类型

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html>
 3     <head>
 4         <title>14-异常</title>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <meta name="description" content="" />
 7         <meta name="keywords" content="" />
 8
 9         <script type="text/javascript">
10
11         var name = "tom";
12         var age  = 25;
13
14         try{
15             //以下语句代码如果出现异常情况
16             //相关的错误信息会被catch捕捉
17             //可以通过catch里边的ex获得具体错误信息
18             console.log(name);
19             console.log(age);
20
21             console.log(addr);  //使用一个未定义变量 ReferenceError
22
23             var student = new Array(-10);  //RangeError  Invalid array length
24
25             var num = new 20();  //TypeError  number is not a function
26
27             var dog = new eval();  //TypeError  function eval() { [native code] } is not a constructor
28
29         }catch(ex){
30             //捕捉异常错误信息
31             console.log(ex);
32         }
33
34         console.log(‘every thing is ok‘);
35
36         </script>
37
38         <style type="text/css">
39         </style>
40     </head>
41
42
43     <body>
44     </body>
45 </html>

14-异常

2 捕捉异常并抛出

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html>
 3     <head>
 4         <title>15-异常</title>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <meta name="description" content="" />
 7         <meta name="keywords" content="" />
 8
 9         <script type="text/javascript">
10
11         var name = "tom";
12         var age  = 25;
13
14         try{
15             //以下语句代码如果出现异常情况
16             //相关的错误信息会被catch捕捉
17             //可以通过catch里边的ex获得具体错误信息
18             console.log(name);
19             console.log(age);
20
21             //console.log(addr);  //使用一个未定义变量 ReferenceError
22             var student = new Array(-10);  //RangeError  Invalid array length
23             //var num = new 20();  //TypeError  number is not a function
24             //var dog = new eval();  //TypeError  function eval() { [native code] } is not a constructor
25
26         }catch(ex){
27             //捕捉异常错误信息
28             //console.log(ex);
29             console.log(ex.message);//获得具体异常错误信息
30             //fileName
31             //lineNumber
32             //columnNumber
33             //for(var k in ex){
34             //    console.log(k+"--"+ex[k]);
35             //}
36         }
37
38         console.log(‘every thing is ok‘);
39
40         </script>
41
42         <style type="text/css">
43         </style>
44     </head>
45
46
47     <body>
48     </body>
49 </html>

15-异常

3 自定义异常信息

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html>
 3     <head>
 4         <title>16-异常</title>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <meta name="description" content="" />
 7         <meta name="keywords" content="" />
 8
 9         <script type="text/javascript">
10
11         var name = "tom";
12         var age  = 25;
13
14         try{
15             console.log(name);
16             console.log(age);
17
18             //自定义错误异常信息
19             if(typeof addr ==‘undefined‘){
20                 throw  {msg:‘addr变量没有定义‘,linenumber:20,col:53,filename:‘16.html‘};
21             } else {
22                 console.log(addr);
23             }
24
25         }catch(ex){
26             console.log(ex.msg);//获得具体异常错误信息
27         }
28
29         console.log(‘every thing is ok‘);
30
31         </script>
32
33         <style type="text/css">
34         </style>
35     </head>
36
37
38     <body>
39     </body>
40 </html>

16-异常

4异常语句块

try{

}catch(ex){

可以把异常信息放入日志文件里边,供系统维护人员查看,定期对代码进行优化,避免重复出现异常

}finally{

}

在异常里边有两种情况

①       只走try语句(没有异常),之后走后边的代码,边

②       try走了一半发生异常,走catch,当catch执行完毕也需要走后边的代码

try-catch后边的代码都可以放到finally里,无论是否产生异常finally里边的代码都给执行

隐藏finally关键是否使用都可以。

时间: 2024-10-15 07:26:32

JS高级学习历程-12的相关文章

JS高级学习历程-15

昨天内容回顾 面向对象的私有成员.静态成员 私有成员:在构造函数里边定义局部变量,就是私有成员. 静态成员:在js里边,函数就是对象,可以通过给函数对象声明成员方式声明静态成员. 原型继承 关键字:prototype 单一成员继承:  函数.prototype.成员名称= 值; 对象继承:函数.prototype = 对象; 原型链继承:许多构造函数可以一一继承,形成一个继承链条,这个链条就是“原型链” 原型链的顶端是Object,对象可以访问的属性constructor.方法 hasOwnPr

JS高级学习历程-13

[正则表达式] \d \d\d [a-z] 什么是正则表达式:用于记录文本规则的代码 正则表达式的作用: ①       可以匹配文本,表单验证(手机号码.邮箱.qq号码) ②       赛选网页内容(网络爬虫),meijob ③       内容替换 正则表达式历史: 正则的组成内容: ①       普通字符内容 ②       组成字符 ③       特殊字符 ④       限制字符 1 正则表达式---普通字符组成 1 <!DOCTYPE html PUBLIC "-//W3

JS高级学习历程-17

[正则案例] 1 匹配手机号码 2 匹配邮箱 3 匹配ip地址 4 验证表单域信息 总结: ()小阔号模式单元重复匹配  \1  \2  \3  \n 正则组合字符组成 \d   \D    \w    \W    \s   \S    \b    \B 正则限制字符组成 {m}    {m,}   {m,n} 4. 正向.反向预查 正向匹配 :内容(?=pattern) 正向不匹配:内容(?!pattern) 反向匹配:(?<=pattern)内容 反向不匹配:(?<!pattern)内容

JS高级学习历程-16

[正则表达式] 1()小括号使用 作用:① 提高表达式优先级关系 ② 提取子字符串内容 模式单元,每个小括号都算作一个模式单元内容,按照内容的下标可以给小括号计数. var  reg = /([0-9]+)-([0-9]+)-[0-9]+/;    //2014-06-21 上边的正则模式,其中2014是模式单元1内容,06是模式单元2内容 ③       模式单元重复匹配 2 组成字符 3 限定字符 4 正向.反向预查 正向预查:查找内容在辅助条件的前边 反向预查:查找内容在辅助条件后边 注意

JS高级---学习roadmap---5 parts

JS高级---学习roadmap---5 parts part 1-3 part 4-5 原文地址:https://www.cnblogs.com/jane-panyiyun/p/12099622.html

JS高级学习路线——面向对象基础

比较传统和对象的编程方式 如何使用对象 定义两个工具包 /*产品工具包 - 保存和产品有关的工具*/ var product={ name:'iphone8', description:'各地区货源已陆续到库,我们将在十月十号左右发货,对于此次延迟发货给您带来的不便表示致歉,望您谅解.', price:6660, /*绑定元素*/ bindDom:function(){}, /*绑定事件*/ bindEvents:function(){}, /*立即购买,暂时不考虑里面的代码是如何写的*/ bu

JS高级学习总结--面向对象

一.对象的四种创建方式 1)直接量 var Student = {name:'小明',age:18}; 2)通过new关键字加Object()构造函数 var student = new Object() student.id = 10; student.name = '王铁锤'; student.age = 18; 缺点:使用同一个接口创建很多对象,会产生大量的重复代码. 3)封装工厂函数 为了减少重复代码,对上述代码进行封装 4)自定义构造函数 /* * 这种方式调用构造函数实际上会经历以下

JS高级学习路线——面向对象进阶

构造函数进阶 使用构造函数创建对象 用于创建对象 其除了是一个函数之外,我们又称之为构造对象的函数 - 简称构造函数 function Product(name,description){ //属性 this.name=name; // 属性 this.description = description //方法 又称方法属性 万物皆属性 this.buy=function(){ alert('buy') } } //会拷贝一份 var p1 = new Product() var p2 = n

PHP菜鸟学习历程-1 JS高级-34-昨天内容回顾

JS高级-34-昨天内容回顾     时间:2015-5-11 1.DOM获取元素节点 document.getElenmentById(id 属性值)                                   具体元素节点对象 document.getElenmentsByTagName(tag 标签名称 div ul li)        数组列表 document.getElenmentsByName(Name 属性值)                       数组列表 2.