JS中的类与对象、封装、继承、多态(一)

2019-05-26  本文已影响0人  小妍妍说

一、类VS对象

面向对象的语言有一个标志就是它们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。

尽管JS在技术上讲是面向对象的语言,但是它不具备传统的面向对象语言所支持的类和接口等基本结构,也就是说js中没有类的概念,但是js中有引用类型,引用类型描述的是一类对象所具有的属性和方法,也是一种数据结构,用于将数据和功能组织在一起;所以从它的逻辑上看,等价于其他程序设计语言中的“类”。

1.1 java中的类与对象

:类是一个模板,它描述一类对象的行为和状态,是一个抽象的概念。

对象:对象是类的一个实例,是客观存在的事物。

java中类的特点:
java中对象的属性:

对象的属性:对象具备的各种特征,每个对象的每个属性都具有特定的值。

对象的方法:就是对象执行的操作,也就是说对象能干什么?

一个类可以包含以下类型变量:

通俗易懂的白话说:比如你打算吃火锅,

“富含蛋白质,富含铁元素的肉,能煮,能炒,能煲。。。”列举的这些条件就是一个类

满足这些条件的“肥牛卷”就是一个对象

1.2 js中的引用类型和对象

引用类型与类看起来相似,但他们并不是相同的概念,还是应该区分来看的。

引用类型:也可以被称之为对象定义,描述的是一类对象所具有的属性和方法。

js中有5个常用的引用类型:Object类型、Array类型、Date类型、RegExp类型、Function类型。

1.2.1 引用类型

在js中,引用类型常常基本数据类型一起区分学习。

本节引自:https://www.cnblogs.com/focusxxxxy/p/6390536.html

1.2.1.1 定义:

基本数据类型:undefined,boolean,number,string,null

基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值。

1.2.1.2 特点:

基本数据类型的特点:

1558849742760.png

引用类型的特点:

引用类型赋值:

当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。前面讲引用类型的时候提到,保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响:

var a = {}; // a保存了一个空对象的实例
var b = a;  // a和b都指向了这个空对象
 
a.name = 'jozo';
console.log(a.name); // 'jozo'
console.log(b.name); // 'jozo'
 
b.age = 22;
console.log(b.age);// 22
console.log(a.age);// 22
 
console.log(a == b);// true
1558852326516.png

因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。

1.2.2 对象

对象:某个特定引用类型的实例。可以使用instanceof 运算符来查看该对象是哪一个类型的实例。

新对象可以在引用类型的基础上使用new操作符后跟一个构造函数来创建。构造函数本身是一个函数,只不过是出于创建新对象的目的而定义的。

常用对象包括Object 对象、Boolean 对象、Number 对象、String 对象。

举个例子,创建Object实例有两种方式,一是使用new操作符后跟Object构造函数

 var person = new Object();

二是使用对象字面量表示法。更推荐这个!

var person = {
    name : "Amy"
    age :29
}
上一篇 下一篇

猜你喜欢

热点阅读