JS高级语法基础(一)

写在前面

由于我是将笔记写在笔记本上,然后手打搬运过来,所以内容非常凌乱,可能只有我自己看得懂,所以各位见谅了。

面向对象

在编程中,我们拥有两种编程方式,一种是面向过程(OOP),一种是面向对象(OOP)。面向对象主要有三种特点,即:封装、继承与多态。

ES6中的类和对象

类:抽象;
对象:具体。
注意:
1、先有类,后有对象;
2、类里面共有的属性和方法必须加this使用;
3、类里面的this指向,谁调用指向谁,使用时也可以被this放进一个变量里

创建类和对象

class 类名{//类名习惯性首字母大写
	constuctor(参数){
		this.变量 = 参数;//constuctor里面的this指向创建的实例对象
		this.方法
}
	方法名(参数){
		代码块;
	}
};
new 类名();//创建对象

类的继承

class 父类{参数};
class 子类 extends 父类{
	constuctor(参数){
	super(参数);//调用父类的构造函数,并且必须在this之前调用
	this.变量 = 参数;//ES6中没有变量提升,所以要加this实例化对象
}

构造函数

ES6——>ECMAScript6.0;

三种方法创建对象:

var obj1 = new Obj();//通过new实例化对象
var obj2 = {};//通过字面量方式创建
function Obj(参数){//类名首字母大写
	codeblock;
	};
var obj3 = new Obj();//通过构造函数的方式创建对象,但必须与new连用

new实例化过程

1、创建空对象;
2、让this指向这个对象;
3、给新对象添加属性和方法;
4、返回这个对象。

实例成员:函数内部通过this添加的,只能通过实例对象来访问;
静态成员:构造函数本身添加的成员,只能通过构造函数来访问。

构造函数好用,但存在内存浪费的问题,因为内部构造函数会开辟空间。

原型对象与原型

原型对象:prototype——>作用:共享方法。

把不变的方法放在原型对象中,所有的实例对象都可以共享这些方法。

一般,把公共属性放到构造函数的内部,公共方法放到原型对象中。

实例对象会自动添加__ptoto__属性,指向原型对象,它是一个非标准的内部属性,给查找机制提供一个查找方向。

首先查找自身,没有在查找原型对象。

原型对象中的constructor构造函数会指回构造函数本身。

构造函数、原型对象与实例对象三者之间的关系

构造函数——>.prototype——>原型对象;
原型对象——>.constuctor——>构造函数;
构造函数——>new——>实例对象;
实例对象——>.proto.constuctor——>构造函数;
实例对象——>.proto——>原型对象

原型链

构造函数的原型对象的__proto__原型指向Object的原型对象,Object的原型对象的__proto__原型指向null

JS的成员查找机制:按照原型链一层一层查找,并且遵守就近原则。

在构造函数和原型对象中的this都是指向实例对象

拓展内置对象

给数组对象Array添加各种方法,然后数组就可以直接调用,但不能通过添加对象的方法拓展内置对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值