console.log(`
1.创建一个空对象
2.让this 指向刚刚创建好的空对象
3.执行构造函数内的代码 (为相关的属性和方法赋值)
4.返回创建好的对象`)
// 1.创建一个空对象
// 2.让this 指向刚刚创建好的空对象
// 3.执行构造函数内的代码 (为相关的属性和方法赋值)
// 4.返回创建好的对象
// new 一个对象的过程 就是实例
function Person(name,age){
this.name = name
this.age = age
}
// info 属性,直接挂载给了构造函数,所以它是静态属性
Person.info = 'aaaa'
//实例方法
Person.prototype.say = function(){
console.log("这是Person的实例方法"); }
Person.show = function(){
console.log("这是Person的静态show方法"); }
const p1 = new Person("许三多",18)
console.log(p1)//实例属性
console.log(Person.info);//静态属性
//通过 new 出来的实例,访问到的属性,叫做[实例属性]
//通过构造函数,直接访问到的属性,叫做[静态属性]
console.log(p1.name);
p1.say();//实例方法
Person.show();//静态方法 console.log('=================class===================');
//
// 实例成员:使用实例对象(实例)来调用的属性和方法(只能使用new创建出来的对象)
// 静态成员:只能使用构造函数名进行 调用和 创建的 属性或者方法
// class ----------------------------------------------------
//创建一个动物类
// 注意1:在 class 的 { } 区间内,只能写 构造器、静态方法和静态属性、实例方法
// 注意2:class 关键字内部,还是用 原来的配方实现的;所以说,我们把 class 关键字,称作 语法糖;
class Animal {
//这是勒种的构造器
//每个类中都有一个构造器如果程序员没有手动指定构造器,那么,可以认为类内部有一个隐形的构造器
//类似如: constructor(){}
// 构造器的作用,就是,每当 new 这个类的时候,必然会优先执行 构造器中的代码
constructor(name,age){
//实例属性
this.name = name
this.age = age
}
// 在 class 内部,通过 static 修饰的属性,就是静态属性
static info = "eeeee"
static show(){
console.log("这是动物的静态方法");
}
wow(){
console.log("动物的实例方法");
}
}
const a1 = new Animal("黄",3)
console.log(a1);
console.log(a1.name);//实例属性
a1.wow();//实例方法
console.log('====================================');
console.log(Animal.info);//info 是Animal静态属性
Animal.show();
console.log('====================================');

  

class Animal {
constructor(name,age){
//实例属性 因为这些通过this挂载的属性,都是通过new出来的实例访问的
this.name = name
this.age = age
}
//实例方法
say(){
console.log('实例say方法')
}
//--------------------------------------------------
//如果要定义静态属性,则需要和constructor,并且这个属性需要被static关键字修饰
//静态属性的定义:无法通过实例访问,只能通过类名的访问
static info = {
address:"上海",
location:"宝山"
}
static show(){
console.log("静态的show方法")
}
}
const a1 = new Animal("小黄",2)
console.log(a1)
console.log(a1.name)//通过实例直接访问的实例属性
a1.say()//通过 实例,直接访问实例方法 实例的挂载在__proto__
console.log('====================================');
console.log(Animal.info)//通过类名,直接访问静态属性
Animal.show()//通过类名,直接访问静态方法
// 实例的 属性 或 方法,都是 通过 new 出来的实例对象来访问的;
// 静态的属性 或方法,都是 直接通过 类名 来访问的;(表现形式:通过 static 来修饰)

  

随机推荐

  1. Java Persistence/ManyToMany

    A ManyToMany relationship in Java is where the source object has an attribute that stores a collecti ...

  2. 快速EDAS字体嵌入问题

    在用edas向国际会议投稿的时候,往往要检查pdf稿件的格式,例如页边距.行距.字体等.经常碰到的一个问题就是字体未嵌入到文件中.因为大家一般用CTex里面的ps2pdf生成pdf文件,图片中的字往往 ...

  3. 使用Spring MVC测试Spring Security Oauth2 API

    不是因为看到希望了才去坚持,而坚持了才知道没有希望. 前言 在Spring Security源码分析十一:Spring Security OAuth2整合JWT和Spring Boot 2.0 整合 ...

  4. python - hash类型操作

    Redis在内存中存储hash类型是以name对应一个字典形式存储的 常用操作 在name对应的hash中获取根据key获取valuehget(name,key) 在name 对应的hash 中设备键 ...

  5. Python3.6安装报错 configure: error: no acceptable C compiler found in $PATH

    安装python的时候出现如下的错误: [root@master ~]#./configure --prefix=/usr/local/python3.6 checking build system ...

  6. python中RabbitMQ的使用(安装和简单教程)

    1,简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从"生产者"接收消息 ...

  7. PLINQ的 ForAll 对比集合的ForEach

    在 PLINQ 中,还可以使用 foreach 执行查询以及循环访问结果. 但是,foreach 本身不会并行运行,因此,它要求将所有并行任务的输出合并回该循环正在上面运行的线程中. 在 PLINQ ...

  8. ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系

    在java主要涉及到数据开发的过程中,我们会和数据库打交道很多,其中使用了数据集比如ResultSet和RowSet,经常使用两种,还有其它的一些,那么这两种的主要区别是什么呢?我们先来看它们引入的方 ...

  9. js生成带logo的二维码

    作为一名java程序员,一直以来都是使用服务端生成二维码,最近接触前端的设计,感觉二维码这块如果放到前端去生成,一方面可以减轻服务端的压力,访问带宽,另一方面,前端页面控制比较顺畅 闲话少叙,说下我的 ...

  10. 映射内网ftp服务器到公网后内网访问出错问题

    上文说道映射后外网无法访问解决:https://www.cnblogs.com/Dev0ps/p/9073048.html 添加了ftp的pasv_address的地址 ,内网客户端要设置主动模式(a ...