文章目录
一、面向对象编程
面向对象与基于对象
面向对象
可以创建自定义的类型,自定义类
支持封装、继承、多态(三大特征)
面向对象的语言:Java、C#、C++等
基于对象
无法创建自定义的类型,但可模拟实现
不能很好的支持面向对象三大特征
什么是对象?
JavaScript中的对象是无序属性的集合:
属性可理解为键值对,键是属性名,值是对应的数据,所以也可认为对象是键值对的集合
值可细分为基本值、对象、函数
对象的属性和方法
属性:对象具有的特征,变量
方法:对象具有的行为 ,函数
创建对象
第一种:直接使用Object()
JS语言为我们提供了一个通用的创建对象的函数:Object(),该函数是一个构造函数,专门用于创建对象。
// 创建一个空的对象
var obj = new Object();
第二种:构造函数(模仿类的定义)
用来创建对象的函数,我们称之为构造函数(构造器)。
第三种:直接使用对象字面量
对象字面量的这种形式通常会在数据传输时使用,语法也极其简单。
// 创建一个空的对象
var obj = {}
第四种:JSON对象
JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式,2001年由 Douglas Crockford 提出,目的是取代繁琐笨重的 XML 格式。
JSON对象是JS语言中的原生对象,它的写法和对象字面的写法其为类似。
注意:JSON对象语法非常严格,要求主要有:
复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
字符串必须使用双引号表示,不能使用单引号。
对象的键名必须放在双引号里面。
数组或对象最后一个成员的后面,不能加逗号。
两个函数
JSON.stringify():用于将一个值转为 JSON 字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。
JSON.parse():用于将 JSON 字符串转换成对应的值。
注意:因为JSON被发明的根本目的是用作数据传输的,所以JSON对象没有行为(方法)
二、this关键字
在对象中:this变视当前对象
在构造函数中:this表示将来被new出来的具体的某一个对象
在普通函数中:this表示函数的调用者
this指向
1.普通函数,指向window
2.箭头函数,指向定义的作用域的上下文
3.事件回调函数,执行事件的触发者
4.对象的方法中,指向当前对象。
5.构造函数,指向将来要被创建的对象
6.全局,是window
三、new命令
new命令的作用
new命令的作用,就是执行构造函数,返回一个实例对象。
其实,new命令不仅仅是可以执行构造函数,普通函数也可以,并且都会返回一个对象。
所以我们在使用构造函数创建对象的时候千万不要忘记使用new命令,如果忘记那么构造函数就会变成普通函数直接执行,而this此时指向的很可能就是window,注意可能会产生一些不可预知的错误。
new命令的原理
new命令的原理
1,创建一个空对象
2,将这个空对象的原型,指向构造函数的prototype
3,将这个对象赋值给构造函数内部的this关键字
4,开始执行构造函数内部的代码