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. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  2. springmvc配置详解 教程

    https://www.cnblogs.com/sunniest/p/4555801.html

  3. jmeter简单的使用

    jmeter简单的使用 一般步骤是:在测试计划下面新建一个线程组,线程组下面添加请求,请求中添加结果和断言 1.打开页面: 2.添加线程组: 3.线程组中设置参数: 很重要的几个参数:线程数.ramp ...

  4. Javascript 设计模式 单例

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/30490955 一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法. 1.单 ...

  5. 理解channel 工作原理以及源码

    Go 的并发特性  goroutines: 独立执行每个任务,并可能并行执行 channels: 用于 goroutines 之间的通讯.同步 一个简单的事务处理的例子  对于下面这样的非并发的程序: ...

  6. ASP.NET Core2.1 你不得不了解的GDPR(Cookie处理)

    前言 时间一晃 ASP.NET Core已经迭代到2.1版本了. 迫不及待的的下载了最新的版本,然后生成了一个模版项目来试试水. ...然后就碰到问题了... 我发现..cookie竟然存不进去了.. ...

  7. 关于socket.io的使用

    这段时间学习了socket.io,用它写了小项目,在此总结下它的基本使用方式和一些要点. socket.io是基于Node.js和WebSocket协议的实时通信开源框架,它包括客户端的JavaScr ...

  8. 实战经验丨CTF中文件包含的技巧总结

    站在巨人的肩头才会看见更远的世界,这是一篇技术牛人对CTF比赛中文件包含的内容总结,主要是对一些包含点的原理和特征进行归纳分析,并结合实际的例子来讲解如何绕过,全面细致,通俗易懂,掌握这个新技能定会让 ...

  9. Vue之生命周期函数和钩子函数详解

    在学习vue几天后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对对vue的生命周期不甚了解.只知道简单的使用,而不知道为什么,这对后面的踩坑是相当不利的.因为我们有时候会在几个钩子函 ...

  10. Spring Boot 2.0 图文教程 | 集成邮件发送功能

    文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...