首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS面向对象一:MVC的面向对象封装

JS面向对象一:MVC的面向对象封装 MDNjavascript面向对象 面向对象(Object-Oriented) ? 面向对象里面向的意思是以...为主,面向对象编程既以对象为主的编程....类(从MVC提炼面向对象是什么) 使用的代码是 模块化、MVC里的V和C、闭包与立即执行函数的使用和MVC中的M(model)、MVC总结 接下来优化老版本的message.js 箭头函数内外this相通...那么我们可以吧每个js文件中的MVC写成一个模板,这个模板就是类 所谓模板,就是写个函数把他造出来,那么我们来封装MVC 封装 Model View Controller 首先建三个封装的文件,再引入...封装后Model(): ? 并且save()传入object 然后就可以用封装后的Model()代码了,修改message.js代码为: ? ? 也就是说,封装后我们的使用方法是: ?...封装Controller.js,但是没有将封装运用,因为自己的简历项目比较小,代码结构不复杂,封装后反而会难理解,知道如何封装和如何使用的思想就可以 封装后的所有MVC代码 总结 密爱想对象封装后MVC

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

面向对象——封装

1.什么是封装对象的状态和行为归为一个整体当中,即字段和方法放到一个类中 信息隐藏:把不需要让外界知道的信息隐藏起来尽可能隐藏对象功能实现细节,向外暴露方法,保证外界安全访问功能 2.封装的好处 保证数据的安全...这样就只能通过getter来获得值,通过setter来设置值而不能直接访问age属性 5.this关键字 this指的是当前对象的地址 ? 通过图中打印对象变量和this,也可验证。...this是表示当前对象地址相当于当前对象的变量 解决成员变量和参数问题 同类中实例方法相互调用可省略this this可以作为参数也可以作为返回值,总之表示了对象相当于那个对象变量 在构造方法相互调用中...this这时表示构造方法的名字 注意:this不能和static 一起使用,因为static和字节码是在载入JVM内存时就纳入了方法区,此时还没有执行还没有使用对象。this没有指向

52740

JS进阶系列02-JS面向对象的三大特征之封装

简介 JS 作为面向对象的一门语言,拥有和其他面向对象语言一样的三大特征,即封装(encapsulation)、继承(inheritance )和多态(polymorphism )。...狭义的封装-封装数据 这其实也是网上各处资料里面对封装最常见的定义了。主要目的就是隐藏数据信息,包括属性和方法的私有化。下面我们以一个用户对象的例子,一起来了解一下JS如何进行数据的封装。...2.1 公有属性和公有方法 假设我们要开发一个网站,需要一个用户对象的构造函数。...显然是不需要的,我们只需要让构造函数对象拥有该方法即可。当然我们为了方便确定构造函数,也可以给它起个名字。...参考 BOOK-《JavaScript设计模式与开发实践》 第一部分 BOOK-《JavaScript高级程序设计》第三版 第7章 JS三大特性 JS私有变量和静态私有变量 JS对象中的公有方法

75120

类与对象(三)——(对象封装

若自发的发生了改变,说明封装性遭到了破坏。】 对象标识——【每个对象都有一个唯一的身份。】 对象对象变量 Java中使用构造器构造新实例。...我们从上述结果中可以发现,ZZZ和Zzz其实是引用指向同一个对象,具体体现就是在当我们调用Zzz.setName()方法后,ZZZ的输出也发生了同样的改变,如下图所示: 封装封装性,也可以称之为数据隐藏...从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称之为方法。对于每个特定的对象都有一组特定的实例域值。...这些值的集合就是这个对象的当前状态。——《Java核心技术卷I》 封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域。 程序仅通过对象的方法与对象数据进项交互。...+ '}'; } } 封装的优点: 提高重用性和可靠性。 隐藏信息、实现细节。 禁止对象之间的不良交互提高模块化(良好的封装能够减少耦合)。

46320

JS对象+构造函数+原型对象谈恋爱了嘛。

Person("zs", 44); obj2.say(); console.log(obj2.currentType); /** * prototype的特点:存在在原型对象里面的属性与方法可以被构造函数的所有对象所共享...);//构造函数里面的prototype指向了对象(原型对象) /*2.每个"原型对象"中都有一个默认的属性, 叫做constructor constructor指向当前原型对象对应的那个..."构造函数" */ console.log(Person.prototype.constructor);//原型对象里面的constructor属性指向了函数(当前原型对象对应的那个..."构造函数") /*3.通过构造函数创建出来的对象我们称之为"实例对象" 每个"实例对象"中都有一个默认的属性, 叫做__proto__ __proto__指向创建它的那个构造函数的...__proto__);//实例对象的__proto__指向了对象(构函数里面的原型对象) ?

1.2K10

JS处理函数对象作为参数传递

做项目的时候遇到一个不是很常见的问题,就是js函数传递参数的时候,我们一般是传递一个数字或者是一个字符串,但是当你的需求满足不了的时候,就需要将对象或者数组作为一个参数传递过去,这个时候怎么做呢,今天简单的说有一下...这个是典型的三层的json结构,所以遍历的难度是不大的,就是很容就遍历出错,我的需求当然不是说仅仅将这些数据遍历出来就可以了,我需要做的是将最里层的data拿到,作为对象传递过去,因为这是每一个订单的具体内容...这个时候我们看上面的数据结构,最外层的是model_list包括的,所以直接取出来,拿到以后呢将我们需要的data拿到,转为json格式的,这个时候我们下面需要用到里面数据的时候就比较容易拿到,下一步就是怎么将对象...data作为一个参数传递过去,我们需要这样处理一下: JSON.stringify(detalData).replace(/\"/g, "'") 将我们拿到的json对象转为string的字符串,然后用正则表达式将里面所有的

6.9K30

js函数对象关系快速记忆

js中关于原型和原型链有 __proto__ 、prototype、constructor 频频出现在面试题中,但是记得多了反而容易记混。 这里简单总结下每个属性的使用场景,方便记忆。...对象函数都有 __proto__,对象的 __proto__指向构造函数的prototype,构造函数的__proto__指向 Function.prototype 对象函数都有constructor...,对象的 constructor指向构造函数,构造函数的constructor指向 Function 函数才有 prototype 函数的prototype又是一个对象,但是 Funtion.prototype...特殊记忆:typeof Function.prototype==="function" Object因为O大写,可以看出本质也是一个构造函数 __proto__ 指向一个原型对象,构造函数.prototype...__proto__===null,因为 Object.prototype 为js 原型链的顶端。

69330

前端进阶JS函数增强与对象增强

JS函数增强 函数属性 JavaScript中函数也是一个对象,那么对象中就可以有属性和方法,他有一些默认的属性 name 函数名 length 函数参数个数(ES6 ......语法不会被算在内) arguments 类似数组对象 可以i用索引来获取对象 rset PS: 箭头函数不绑定 Arguments 对象 arguments 转为数组对象常见方法 普通的方法 就是将内容一个一个迭代到新数组了...他是一个特殊函数可以将传入的字符串当作js代码执行 可读性差 有注入风险 必须经过解释器 不会得到引擎的优化 严格模式的使用 js的局限性 : JavaScript 不断向前发展且并未带来任何兼容性问题...; 新旧代码该新模式对于向下兼容有帮助但是也有问题出现 就是创造者对于js的不完善之处会一直保留 ES5标准中提出了严格模式的概念,以更加严格的方式对代码进行检测和执行 只需要在代码的开头或者函数的开头...加入use strict就可以开启严格模式 JS对象增强 数据属性描述符 我们的属性一般定义在对象的内部或者直接添加到对象内部,但是这种方式我们就不能对属性进行一些限制,比如这个属性是否是可以通过delete

60530

JS 函数中的 arguments 类数组对象

箭头函数中没有 arguments 1. arguments 介绍 众所周知,js 是一门非常灵活的语言。...当我们在 js 中调用一个函数时,经常会给函数传递一些参数,js 把调用函数时传入的全部实参存储到一个叫做 arguments 的类数组对象里面 arguments 是一个类数组对象,不是一个真正的数组...这里做下总结 arguments 是类数组对象(伪数组),即不是一个真正的数组,而是一个对象。...箭头函数中没有 arguments arguments 只存在于普通函数中,而在箭头函数中是不存在的 下面代码抛出错误异常:Uncaught ReferenceError: arguments is not...defined const arrow = () => {    console.log(arguments);}arrow('html', 'css', 'js') 箭头函数中虽然没有 arguments

5.4K20

Java面向对象封装

封装的概念Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。...封装具体实现步骤1、声明类的成员变量时,使用private关键字进行修饰,将变量设为私有属性(只能在类的内部访问)。2、为每个私有属性提供getter和setter方法,用来读取和修改私有属性。...另外,Java中的封装还可以使用关键字this来表示当前对象,以便在方法内访问当前对象的属性或调用其他方法。...例如:this.age 表示当前对象的年龄属性,this.setName() 表示调用该对象的setName()方法。...总之,Java中的封装将类的数据和方法进行了包装和隐藏,对外只提供了公共的访问接口,从而保证了程序的安全性和稳定性。

15821

面向对象封装

封装 封装的定义 隐藏对象的属性和实现细节,仅对外提供公共访问方式。 封装的好处 1. 将变化隔离; 2. 便于使用; 3. 提高复用性; 4. 提高安全性; 封装的原则 1....: 向不同的对象发送同一条消息(!!!...所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。...例如,如果想编写现有对象的自定义版本,可以继承该对象 也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。...例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法 例2:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系 示例

49810
领券