JS高级之捕获异常、for-in循环、面向对象和原型

5 捕获异常

try/catch/finally 语句用于处理代码中可能出现的错误信息。
try语句定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
finally 语句在 try 和 catch 之后无论有无异常都会执行。

        try {
    
    
            try {
    
    
                var str = undefined;
                var result = str.trim();
            } catch (ex) {
    
    
                console.error("内层:", ex);
            } finally {
    
    
                console.log("finally");
            }
        } catch (ex) {
    
    
            console.error(ex);
        } finally {
    
    
            console.log("外层的finally");
        }

6 for-in循环

作用:循环对象或者数组

语法:for (变量名 in 数组名/对象名){}

for- in 循环会把原型链上的属性也循环到,但是当enumerable为false时不会循环

var obj = {
    
     x: 1, y: 2 };
Object.defineProperty(obj, 'z', {
    
    
	value: 3,
    enumerable: true // 可枚举
});
for (var key in obj) {
    
    
    console.log(key); // x y z
	console.log(obj[key]); // 1. 2. 3
}

7 面向对象

​面向对象程序设计(Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问与对象相关的数据。

7.1 理解面向对象

面向对象是一种开发思想

面向过程:在开发过程中是关注过程 的开发方式,在开发时,关注每一个细节、步骤和顺序。

优缺点:性能较好 但是由于调试时需要实例化 消耗较大 不宜维护 不易复用 不易扩展

面向对象:在开发过程中,只需要找一个对象帮我们来完成事情。

优缺点:容易维护,容易复用,容易扩展,由于面向对象有封装 、继承 、多态的特性 ,可以设计出低耦合的系统

类和对象

在 js 中所有的事物都是对象,字符串、布尔值、数值、函数等都是对象。

类:是具有相同属性和方法的集合,类是抽象的

对象:是一个具体的实例,对象是实际存在的

7.2 创建对象的方法

1、字面量方式创建对象,后期可以动态添加属性和方法,但是不能批量生产

	var obj = {
    
    
            name: "Alice", age: 18, show: function () {
    
    
                console.log("我叫。。。。。。");
            }
        };

        obj.gender = "男";
        obj.run = function () {
    
    
            console.log("我能跑!!");
        }

2、内置构造函数的方式创建对象,在后期可以动态的添加属性和方法

	var obj3 = new Object();
        obj3.name = "Alice";
        obj3.age = 18;
        obj3.show = function () {
    
    
            console.log("我叫。。。。。。");
        }

3、工厂函数创建对象

function factory(name,age){
    
    
	var obj =();
	obj.name="张三";
	obj,age=18;
	obj.show=function(){
    
    
	console.log("展示")
	}
	return obj;
}

4、自定义构造函数创建对象,需要和new关键字连用,函数名使用大驼峰命名法

function Factory(name,age){
    
    
    this.name=name;
    this.age=age;
    this.show=function(){
    
    
    	console.log("展示")
    }
}
var obj1 = new Factory("李四",17);

8 原型和原型链

8.1 原型

原型解决的问题:当想要给实例对象添加方法时,直接写在函数体中不好,为了解决这一问题,我们将方法写在原型上,在内存中就只用创建一个方法,供对象进行试验

概念:

每一个函数都有一个prototype属性,是一个对象

每一个对象上都有一个__proto__属性,指向所属构造函数的prototype

当访问对象的属性或方法时,首先在自身上进行查找,如果没有,就会去__proto__上去查找

作用:在原型上添加方法,在内存中只会创建一个方法,专门供对象进行使用

8.2 原型链

原型链:用__proto__属性串联起来对象链状结构

猜你喜欢

转载自blog.csdn.net/weixin_54026054/article/details/128987593