什么是new实例化、声明初始化的区别

167 阅读2分钟

什么是实例化

实例化(instantiate)是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程。实例化过程中一般由类名 对象名 = new 类名(参数1,参数2...参数n) 构成。

简介

在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:

如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。

多数语言中,实例化一个对象就是为对象开辟内存空间,或者是不用声明,直接使用new 构造函数名,建立一个临时对象。

使用方法 以PHP为例。

类不同于函数,定义完之后无法直接使用,因为类只是一个抽象的概念,需要通过关键字new来实例化类,才可以使用。类实例化的语法格式如下:变量名=new 类名([构造函数])。其中,变量名可以为任何PHP变量的名称,构造参数取决于类的构造函数,若无构造函数,则圆括号中为空。

实例化一个类后即可使用该类。

列如:

<?php
     class People{
         public $name;  
         public function introduceMySelf(){
             echo '内容',$this->name.‘内容2’;
         }
      }
      $p=new People();
 ?>

如果要在类外使用类的属性和方法(前提是该属性或方法是可访问的),需要使用操作符->,语法格式如下:

实例化的类变量名->属性名;

实例化的类变量名->方法名([方法参数]);

使用类的方法与调用函数一样,在圆括号中给出函数参数(没有参数时当然就不用写了)。需要特别注意的是,在使用操作符->引用属性时,属性名是不加符号$的。

使用类自己封装定义本地存储的方法

// 枚举两个存储方式
enum storageType {
    L = 'localStorage',
    S = 'sessionStorage',
}

// 封装前端操作方法
class SStorage {
    storage:Storage; //内置属性
    constructor(Type:string) {
        this.storage = Type === 'localStorage' ? window.localStorage : window.sessionStorage;
    };
    // 存储方法
    setItem(key:string, value:string) {
        this.storage.setItem(key, JSON.stringify(value));
    }
    // 获取方法
    getItem(key:string) {
        let value = this.storage.getItem(key);
        if(value) {
            try {
                return JSON.parse(value)
            } catch (error) {
                return value
            }
        }else {
            console.error('缓存 key' + key + ', 不存在');
            return null;
        }
    }
    // 删除方法
    removeItem(key:string) {
        this.storage.removeItem(key);
    }
    // 清空方法
    clear() {
        this.storage.clear();
    }
}

// 实例化定义的类及构造函数中的方法 导出
let storageTool = new SStorage(storageType.L);
let sesstionTool = new SStorage(storageType.S);

// 导出
export {
    sesstionTool,
    storageTool
}

总结:

声明,只生成对象不赋值的过程

初始化,是给对象赋值的过程

实例化,是使用new为对象分配内存的过程