当前位置: 首页 > 科技观察

一篇文章看懂JavaScript面向对象_0

时间:2023-03-12 05:11:29 科技观察

面向对象是程序中的一个重要思想,即程序中的所有操作都是通过对象来完成的。例如:操作浏览器需要用window对象操作网页,需要用document对象操作控制台,需要用console对象。先说什么是程序。计算机程序的本质是对真实事物的抽象。抽象的反义词是具体的。例如,照片是对特定人物的抽象,汽车模型是对特定汽车的抽象。程序也是事物的抽象。在一个程序中,我们可以代表一个人、一条狗、一支枪、一颗子弹,以及所有其他的东西。当一个事物到达程序中时,它就变成了一个对象。程序中的所有对象都分为两部分:数据和函数。以人为例,姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉,属于人的功能。.数据在对象中称为属性,函数称为方法。所以简而言之,一切都是程序中的对象。要想面向对象,操作对象,首先要有对象,那么接下来就是如何创建对象了。1、一个类要面向对象,要操作对象,首先要拥有对象,那么接下来的问题就是如何创建对象。要创建一个对象,必须先定义一个类。所谓类,可以理解为对象的模型。在程序中,可以根据类创建指定类型的对象。例如:可以通过Person类创建人对象,通过Dog类创建狗。汽车的对象是由Car类创建的,不同的类可以创建不同的对象。2.面向对象的创建方式字面量创建缺点:适合创建单个对象,代码冗余用字面量创建对象的本质是用newObject创建对象。//字面意思是创建一个对象constperson2={name:'张三',age:10}console.log(person2)//{name:'林三鑫',age:10}本质是//newObject创建一个objectconstperson2=newObject()person2.name='张三'person2.age=10console.log(person2)//{name:'张三',age:10}因为构造函数的原型和_proto它的实例_指向同一个地方,所以让我们验证一下。constperson2={name:'张三',age:10}constperson3=newObject()person3.name="张三"person3.age=10person3._proto==Object.prototype//trueperson2._proto==Object.prototype//true工厂模式创建函数封装问题:解决代码冗余问题,但标识不明确。构造函数创建问题:修复了指向不明确问题的指针,但浪费了内存。新运营商是做什么的?//1。声明构造函数Student(name,age,sex){//1.隐式创建一个空对象,让this指向这个空对象//this=newObject();//2。ExecuteCodeintheconstructor(addpropertiesandmethods)//添加属性this.name=name;这个。年龄=年龄;this.sex=性别;//添加方法this.study=function(){console.log("好好学习,天天向上!!!,好好学习,每天封闭自己");}//4。隐式返回创建的对象//returnthis}vars2=newStudent("ZengQingwen",18,"Female");控制台日志(s2);//{name:"曾庆文",age:18,sex:"女",study:?}原型对象创建方法问题:解决了浪费内存的问题,但是不能传人参。混合创建Constructor(variable)+prototype(fixed,public,shared)问题:破坏了封装,因为prototype中的属性和方法都写在了函数之外。动态混合创建小结在我们日常的开发中,通常会使用以下几种方法来创建对象。ConstructorcreatesanobjectliteralcreatesanobjectnewObjectcreatesanobjectObject.create创建一个对象,创建的是一个对象原型,原型为空。创建动态混合体。