资讯专栏INFORMATION COLUMN

面向对象简介

_ivan / 2792人阅读

摘要:面向对象概述简单的概述以下面向对象面向对象变成的全称为,简称。面向对象编程可以看作时使用一系列对象相互协作的软件设计。面向对象编程的三个重要特征封装,继承,多态。构造函数的方法内关键字会指向当前对象。冻结对象禁止对对象执行任何修改操作。

面向对象 概述

简单的概述以下面向对象

面向对象变成的全称为object oriented programming, 简称oop。 面向对象编程时用抽象的方式创建基于现实世界模型的一种编程模式。
面向对象编程可以看作时使用一系列对象相互协作的软件设计。面向对象编程设计的目的时在编程中促进更好的灵活性和可维护性。凭借其对模块化的重视,面向对象的代码开发更简单,更容易理解。面向对象编程的三个重要特征:( 1 封装,2 继承,3 多态)。
所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对详间所有的交流都是通过方法调用,通过对封装对象数据,提高复用率。

向对象是什么

JavaScript是一种基于原型的面向对象语言,而不是基于类的。正是由于这一种根本的区别,其如何创建对象的层级结构以及对象的属性与属性值是如何继承的并不是那么清晰。
基于原型的语言(如JavaScript) 并不是在这种区别:它只有对象。基于原型的语言具有所谓原型对象(prototypcal object) 的概念。原型对象可以作为一个模板,新对象可以从中获取原始的属性。任何对象都可以指定其自身的属性,既可以是创建时也可以在运行创建时。而且任何对象都可以作为另一个对象的原型(prototype),从而允许后者共享前者的属性。

封装

所谓封装就是按照要求使用并得到对应的结果,而不需要知道其真实的执行原理是怎么样的
封装主要用于阐述对象所包含的内容,他们通常由两个部分组成:
1相关的数据(用于存储属性) 2基于这些数据所能作的事情

继承

继承通常是指类与类之间的关系。如果两个类都具有相同的属性或方法,那么可以让一个继承于另一个类,这样就不需要在前者再次定义同样的属性或方法。
创建一个或者多个类的专门版本类方式为继承。创建的专本版本的类通常叫做子类,另外的类通常叫做父类。在JavaScript中,继承通过赋予子类一个父类的实例并专门化子类来实现

多态

不同的对象可以定义具有相同名称的方法,方法是作用于所在的对象中。这种不同对象通过相同方法的调用实现各自行为的能力,被称之为多态。

构造函数

构造函数

构造函数由称之为构造器或对象模板,是对象中的一个方法,在实例化是构造器被调用。在JavaScript中函数就可以作为构造器使用,因此不需要特别的定义一个构造器方法。
function person(){ console。log(‘person instantiated’);
}
var person = new person ();
这里的person()并不是作为函数 而是构造函数。
创建person对象需要使用new关键自

构造函数的实行

构造函数的属性实际上就是对象的变量。一个对象可以包阔多个属性,定义构造函数属性是使用this这是关键字。
function Person (firstname){
this.firstname =firstName;
console.log (‘person instanttiated’);
}
var person = new person (‘Alice’);
console。log (‘person is +person。firstname’);

构造函数的方法

构造函数的方法想构造函数的属性,不同的是方法是以恶函数(或像函数一个样被定义)。定义构造函数的方法时使用this关键词。
var person = function(firstname){
this.firstname = firstName;
this.sayhello = function () {
console.log ("hello, I"m+this.firstName");

};
};
var person = new person (Alice);
person.sayhello();

this这个关键词

JavaScript 有一套完全不同于其他语言的对this处理机制,this 关键字本身没有任何含义,比如下记中不同的情况下,this指向的各种不同。
全局范围内:this关键字会指向全局对象。
this。a = 10 //global。a=10
console.log(a);//10
构造函数内:this 关键字会指向新创建的对象。
构造函数的方法内:this关键字会指向当前对象。
var hero={};
hero.sayName = function (){
return "hello " +this.name;
}

Object类型

属性描述符

JavaScript提供里一个内部数据结构,用于描述对象的值,控制其行为,例如该属性是否可写,是否可配置,是否修改以及是否可枚举等。这个数据结构被称为"属性描述符"。
每一个属性都有自己对应的属性描述符,保存属性的元信息。
{
value :‘卧龙学院’,
writable:false,
enumerable:true,
configurable:false,
get:undefined,
set:undefind
}
对象里面目前存在的属性描述符有两种主要形式:数据描述符和存储描述符。

数据描述符

数据描述符是一个具有值得属性,该值可能是可写的,也可能不是可写的。该数据描述符具有以下可选建值:
value:该属性对应的值。可以是任何有效的JavaScript值(数值 对象,函数等。默认为undefined)
writable:当且仅当该属性的writable 为true时,value才能被赋值运算符改变。默认为false。
configurable:当且仅当该属性的configurable为true时,该属性描述符才能够被改变,同时该属性也能从对应的对向上被删除。默认为false。
enumerable:当且仅当该属性的enumerable为true时,该属性才能够出现在对向上的枚举属性中默认为false

存储描述符

存取描述符时由getter-setter 函数对描述的属性。存取描述符具有以下可选建值:
get:给属性提供getter方法,如果没有getter则为undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象。
set:给属性提供setter的方法,如果没有setter则为undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,及该属性新的参数值。
configurable:当且仅当该属性的writable 为true时 ,该属性描述符才能够被该表,同时属性也能从对应的对象上被删除。默认为false。
enumerable:当且仅当该属性的enumerable为true时,该属性才能够出现在对象的枚举属性中。
默认为false

获取属性描述符

ObjectgetowmpropretyDescriptor()方法返回指定对象上一个自由属性对应的属性描述符。
obj:需要查找的目标对像,
prop:目标对象内属性名称(string类型)。
返回值:如果指定的属性存在于对向上,则返回其属性描述符对象,否则返回undefined。

设置属性描述符

objectdefineproperty()方法为对象定义属性改变现有属性,并返回该对象。
obj:要在其上顶会议属性的对象。
prop:要定义或者修改的属性名称。
descriptor:将被定义或修改的属性描述符。
返回值:被传递给函数的对象。
objectdefineproperties()方法为对象定义一个或者多个新属性或修改现有属性,并返回该对象。
obj:要在其上定义属性的对象。
props:要定义其可枚举属性或修改的修改属性描述符的对象。
返回值:被传递给函数的对象。

属性描述符的可选建值

writable:Boolean值,表示目标属性的值是否可以内修改。当且仅当该属性的writable为true时,value才能被赋值元算符该表。默认为false。

属性描述符的可选键值

configurable:Boolean值,表示目标属性的描述符是否可以被修改。当且仅当该属性的configurable为true时,该属性描述符才能够被该表,同时该属性也能从对应的对向上被删除。默认为false

enumerable:Boolean值,表示目标属性是否可遍历。当且仅当该属性的enumerable为true时,

该属性才能够被出现在对象的枚举属性中。默认为false。
如果对象的属性的enumerable的值为false,以下三种操作取不到的属性:
for in
objectkey()方法
jsonstring()方法

属性描述符的存储器

对象的属性除了可以直接定义以外,还可以使用存储器进行定义。其中setter为存储函数,使用属性描述符中的set;getter为取值函数,使用属性喵符中的get

防篡改

定义的对象默认在任何时候,任何位置,无论有意义的还是无意义的都可以修改对象的属性或方法。而这些篡改可能会影响内置属性或方法,从而导致对象的正常功能可能无法使用。
JavaScript在ecmascrip5版本中新增字放置篡改对象的属性或方法的机制,共提供了以下三级保护方式:
禁止拓展:禁止为对象扩展新的属性或方法
密封对象:禁止扩展新的属性或方法,禁止配置现有的属性或方法描述符,仅允许读写属性的值。
冻结对象:禁止对对象执行任何修改操作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108183.html

相关文章

  • 大前端2018现在上车还还得及么

    摘要:面向对象三大特征继承性多态性封装性接口。第五阶段封装一个属于自己的框架框架封装基础事件流冒泡捕获事件对象事件框架选择框架。核心模块和对象全局对象,,,事件驱动,事件发射器加密解密,路径操作,序列化和反序列化文件流操作服务端与客户端。 第一阶段: HTML+CSS:HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、 JavaScript基础:Js基础教程、js内置对...

    livem 评论0 收藏0
  • 大前端2018现在上车还还得及么

    摘要:面向对象三大特征继承性多态性封装性接口。第五阶段封装一个属于自己的框架框架封装基础事件流冒泡捕获事件对象事件框架选择框架。核心模块和对象全局对象,,,事件驱动,事件发射器加密解密,路径操作,序列化和反序列化文件流操作服务端与客户端。 第一阶段: HTML+CSS:HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、 JavaScript基础:Js基础教程、js内置对...

    stormgens 评论0 收藏0
  • 大前端2018现在上车还还得及么

    摘要:面向对象三大特征继承性多态性封装性接口。第五阶段封装一个属于自己的框架框架封装基础事件流冒泡捕获事件对象事件框架选择框架。核心模块和对象全局对象,,,事件驱动,事件发射器加密解密,路径操作,序列化和反序列化文件流操作服务端与客户端。 第一阶段: HTML+CSS:HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、 JavaScript基础:Js基础教程、js内置对...

    mylxsw 评论0 收藏0
  • Java 理解面向对象

    摘要:面向对象面向对象的三种基本特征继承封装多态结构化程序设计简介主要原则自顶向下逐步求精模块化。在面向对象方法中,类之间共享属性和操作的机制称为继承。 面向对象 面向对象的三种基本特征:继承、封装、多态 结构化程序设计简介 主要原则:自顶向下、逐步求精、模块化。 结构化分析SA方法对系统进行需求分析;结构化设计SD方法对系统进行概要设计、详细设计;结构化编程SP方法来实现系统。 结构化程序...

    NSFish 评论0 收藏0
  • Python入门-Python简介

    摘要:年月宣布支持时间延长到年。更详细的发布列表参阅官网的版本号分为三段,形如。其中表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加表示功能更新,出现新功能时增加表示小的改动如修复了某个,只要有修改就增加。年公司正式发布。 < 返回索引页 Python语言简介 Python介绍及发展 介绍 Python 官方网站:https://www.python.org/, 大家可以到此处下...

    Java_oldboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<