面向对象的Javascript:封装

D类功放LC滤波器实战:从Q值0.707到EMI优化的完整设计流程 本文详细解析了D类功放LC滤波器的完整设计流程,从确定截止频率与Q值0.707的理论基础出发,到参数计算、仿真验证及关键元器件选型,并提供了应对EMI超标和过流保护等实际问题的进阶调试策略。文章强调,精准的LC滤波器设计是平衡音质、稳定性与电磁兼容性的关键,尤其需关注电感饱和电流与电容直流偏置等细节。 阅读详情

转载请注明出处:http://www.3body.tk/iblog/

Javascript是一门基于对象的语言,而不是面向对象。所以面向对象特有的一些概念在Javascript并不具备。但是我们可以通过Javascript语言提供的其他特点辅助实现面向对象编程。

本文讲述如何在Javascript中实现面向对象编程的特性之一–封装

首先来看一个基本的Javascript Class:

  var Lily = function() {
    this.name = "lily";
    this.age = 14;
    this.speak = function(something) {
      alert("lily:" + something);
    };
  };

上面定义了一个简单的Class,名字为Lily,类中包含了Lily同学的姓名,年龄,和她具有的一个行为–说话。我们再根据Lily这个Class创建出一个对象:

  var lily = new Lily();
  document.write("lily's name is " + lily.name);
  document.write("lily's age is " + lily.age);
  lily.speak("hello world");

可以看出,由于Javascript本身不具备定义public,private,protected这些面向对象语言(比如Java)特有的隐藏/公开信息的声明特性,所有的属性,方法都是public的。那如何才能让Lily把自己不想公开的信息隐藏起来呢,比如这位MM的年龄?

想一下?在Javascript中如果将一个变量作为局部变量定义在方法内部,那么这个局部变量对于方法外的其他域来说是不可访问的。这个概念跟面向对象方法中的private声明看上去是不是有些类似。刚好在Javascript中我们定义一个Class也是用Function来实现,那么如下:

  var Lily = function() {
    var age = 14;
    this.name = "lily";
    this.speak = function(something) {
      alert("lily:" + something);
    };
  };

这样Lily的年龄就是个秘密了。可是万一过了一年,Lily同学的学校要将所有的同学年龄加上一岁,可是Lily的年龄由于谁都不知道(除了她自己),学校应该怎么办呢?这时候Lily 为了不暴露自己的年龄,便主动跟学校说,你什么时候要把年龄加一就告诉我一下,我自己加就行~~

  var Lily = function() {
    var age = 14;
    this.name = "lily";
    this.speak = function(something) {
      alert("lily:" + something);
    };
    this.ageUp = function() {
      age ++;
    };
  };

一年一年过去了,马上就要毕业了,同学们对Lily的年龄十分好奇,想你看上去挺年轻的啊,怎么不敢将年龄告诉大家呢,难道是个装嫩的阿姨?Lily同学听说后不淡定了:

  var Lily = function() {
    var age = 14;
    this.name = "lily";
    this.speak = function(something) {
      alert("lily:" + something);
    };
    this.ageUp = function() {
      age ++;
    };
    this.getAge = function() {
      return age;
    }
  };

说你们谁爱看谁看呗。人家是怕太年轻吓到你们咯~~

当然,Lily同学也经常有些小动作,比如偷偷的唱个生日歌什么的,就不足为外人道了,

  var Lily = function() {
    var age = 14;
    this.name = "lily";
    var sing = function(song) {
      // sing a song
    };
    this.speak = function(something) {
      alert("lily:" + something);
    };
    this.ageUp = function() {
      sing("Happy birthday to me");
      age ++;
    };
    this.getAge = function() {
      return age;
    }
  };

好了,以上就是在Javascript中实现的简单的信息隐藏,但是这种封装方式对于继承机制来说并不友好,所以一般只用在不再继承体系中的一个独立的类中。如果实现一个完整的继承体系,我比较倾向于使用约定的编码规则来声明private,比如所有私有方法与属性前加下划线。

var Lily = function() {
    this._age = 14;
    this.name = "lily";

    this.speak = function(something) {
      alert("lily:" + something);
    };
    this.ageUp = function() {
      this._age ++;
    };
    this.getAge = function() {
      return this._age;
    }
  };

这样虽然大家都可以查到Lily同学的年龄,但是如果谁真的去查了,

var lily = new Lily();
alert("哈哈,lily的年龄是:" + lily._age);

就会受到大家的指责:“Hi,那是这位女士的隐私,你这样做是不道德的”。

【目标检测】IoU(交并比)详解及代码实现 1. IOU概述        IoU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是“预测的边框”和“真实的边框”的交叠率-,即它们的交集和并集的比值。最理想情况是完全重叠,即比值为1。 2. IoU计算        IoU等于“预测的边框”和“真实的边框”之间交集和并集的比值。IoU计算如下图,B1为真实 阅读详情

相关推荐

Colab虚拟环境配置全攻略:从安装到实战应用

本文详细介绍了在Google Colab中配置Python虚拟环境的完整流程与实战技巧。通过安装Anaconda、创建独立环境、解决常见错误及结合深度学习项目应用,帮助用户有效管理依赖、避免冲突,并利用环境持久化策略提升在Colab中的开发效率与项目可复现性。

weixin_29204121的博客 340

Js中面向对象的三大特点:封装、继承、多态

Js中面向对象的三大特点:封装、继承、多态 前言:面向对象、对象、构造函数、原型对象、原型链 面向对象:程序中,都是先用对象结构,集中保存一个事物的属性和功能,然后再按需使用事物的属性和功能,这种编程思想就是面向对象。 对象:程序中,集中存储一个事物属性和功能的程序结构/存储空间。 构造函数:专门描述同一类型的所有对象的相同结构的函数。 原型对象:该类型下所有子对象集中保存共有成员方法或属性的一个父级对象。 原型链:由多级父对象逐级继承形成的链式结构。 一.封装(创建对象) 用{}创建一个对象:

神奇的兔子 2272

【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率

本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。

weixin_29227585的博客 436

V少JS基础班之第九弹:面向对象之封装

面向对象之封装。 私有化变量

优快云_Xying的博客 800

饥荒Mod 开发(二):Mod目录结构

饥荒中的每个Mod 都有一些固定的目录结构,各个目录的放着不同类型的文件。动画,图片,源代码等。我们最好是遵守Mod 开发中的各个目录结构,我用的是WeGame 安装的饥荒游戏,Mod 目录如下,这个目录下保存所有订阅的Mod。

小乖写代码 4629

802.11ax 的OFDMA资源分配详解

802.11ax 引入的最重要的技术就是OFDMA。OFDMA中引入了RU(资源块)概念,也就是20Mhz/40Mhz/80Mhz/160Mhz的带宽可以切割成不同尺寸的RU,分配给不同的用户使用,这样就大大提高了频谱资源的利用率。 常见的RU尺寸有26/52/102/242/484/996,单位是子载波,每个子载波是78.125Khz,这样20Mhz的带宽可以划分为如下图所示的不同RU大小。 按照11ax规范的要求,上下行的数据传输都可以由AP来统一调度,这样上下行的OFDM...

weixin_43408952的博客 1万+

JS---JavaScript面向对象编程<一>:封装

前面说过,JavaScript是一种基于对象(object-based)的语言;因JavaScript的语法中没有class(类),因此它又不是一种真正的面向对象编程语言。此文简单说一下js面向对象编程的封装部分。     如果我们要把"属性"(property)和"方法"(method)封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做? 一.生成对象的原始模式

马兆娟 廊坊师范学院信息技术提高班第八期 6953

用Arduino和8个舵机,从零搭建一台能走路的并联腿机器狗(附完整代码与3D模型)

本文详细介绍了如何用Arduino和8个舵机从零搭建一台能走路的并联腿机器狗,包括硬件准备、结构组装、电路系统搭建、运动算法实现和Arduino编程。通过完整的代码与3D模型,帮助创客深入理解机器人运动原理,实现稳健行走的8自由度机器狗。

weixin_30482383的博客 702

javascript中的面向对象_JavaScript: 面向对象编程,带你认识JS的封装、继承和多态...

首先,什么是面向对象编程 ?什么是面向对象呢,用java中的一句经典语句来说就是:万事万物皆对象。面向对象的思想主要是以对象为主,将一个问题抽象出具体的对象,并且将抽象出来的对象和对象的属性和方法封装成一个类。面向对象和面向过程的区别:面向对象和面向过程是两种不同的编程思想,我们经常会听到两者的比较,刚开始编程的时候,大部分应该都是使用的面向过程的编程,但是随着我们的成长,还是面向对象的编程思想比...

weixin_39809168的博客 72

基于STM32的智能电子秤设计毕业论文

摘要:本文设计了一款基于STM32F103C8T6的智能电子秤系统,通过HX711称重传感器实现高精度测量,采用OLED显示和矩阵键盘完成人机交互。系统包含重量采集、数据处理、单价设置、去皮清零及总价计算等功能模块,经测试测量误差小于0.1%,稳定性良好。研究实现了低成本、高可靠性的智能称重方案,为后续无线传输和AI算法集成奠定了基础。关键词:STM32;智能电子秤;HX711;OLED显示;矩阵键盘。

3254968421的博客 849

08-StarRocks性能调优FAQ

StarRocks性能调优摘要 本文提供了StarRocks数据库性能调优的常见问题解答,涵盖查询优化、索引设计、分区策略和系统配置等关键方面。主要内容包括:查询优化技巧(使用EXPLAIN分析、避免全表扫描、优化JOIN和聚合查询);索引选择与维护建议(高频查询列索引、复合索引);分区策略设计(时间分区、范围分区)及其管理方法;以及系统内存配置优化(JVM参数调整、查询内存限制设置)。这些优化措施可显著提升StarRocks的查询性能和系统效率。

欢迎来到我的博客,一起探索代码里的世界! 541

js - JavaScript面向对象编程<一>:封装

前面说过,JavaScript是一种基于对象(object-based)的语言;因JavaScript的语法中没有class(类),因此它又不是一种真正的面向对象编程语言。此文简单说一下js面向对象编程的封装部分。     如果我们要把"属性"(property)和"方法"(method)封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做? 一.生成对象的原始模式

Beluga_白鲸 996

安装WSL过程中出现注册表编辑器无法重命名WSL。重命名项时出现错误的解决方案

本文主要介绍了安装WSL过程中出现注册表编辑器无法重命名WSL。重命名项时出现错误的解决方案,希望能对使用Windows WSL的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

javascript中的面向对象:封装、继承、多态详解

目录封装继承多态重载arguments重构 封装 在面向对象中,一定要把公用以及父级自己要用的属性和方法封装在父对象的内部 继承 当子对象需要公用属性或方法时,可以直接从父对象中继承 多态 重载 配合arguments,根据传入的参数不同,执行不同的函数体 arguments 一个类数组对象,包含所有传入的参数,是实现重载的一种工具 重构 父对象构造出来的属性和方法,都可以在子对象中重新定义 ...

error 450

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JS面向对象编程之:封装、继承、多态

JS面向对象编程之:封装、继承、多态最近在实习公司写代码,被隔壁的哥们吐槽说,代码写的没有一点艺术。为了让我的代码多点艺术,我就重新温故了《javascript高级程序设计》(其中几章),然后又看了《javascript设计模式》,然后觉得要写点心得体会,来整理自己所学的吧。以下是我个人见解,错了请轻喷,欢迎指出错误,乐于改正。 一、封装 (1)封装通俗的说,就...

Niko_Yu的博客 272

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

面向对象的 JavaScript:封装、继承与多态

本文作者:家园工作室研发组成员 @维尔希宁 本文出处:面向对象的 JavaScript:封装、继承与多态​blog.lenconda.top本文遵循署名-非商业性使用-禁止演绎3.0 未本地化版本(CC BY-NC-ND 3.0)协议发布,使用本文时请遵守该协议。在现代编程语言中,我们经常提及面向对象编程(Object-Oriented Programming,OOP)。所谓的面向对象,其实是一种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。与函数式编程(Functional Programm

weixin_44646536的博客 596

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JavaScript封装与多态:面向对象编程的特性应用(附案例)

本文介绍了JavaScript面向对象编程中的封装与多态两大核心特性。封装通过函数作用域和ES6类实现数据隐藏,确保安全性;多态借助继承和方法重写实现同一接口的多样化行为。文章结合绘图程序、日志系统等案例,展示了如何运用这些特性提升代码的可维护性与扩展性。后续将深入探讨继承特性,完善面向对象编程知识体系。

fykam的博客 984

JavaScript中面向对象的特性

刚刚学习完JavaScript中面向对象关于对象的一些知识,现在通过一个简单的案例:表单生成器,来阐述一下我对其的理解。 Java 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 1 定义表单基本格式 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的M...

weixin_44418584的博客 1009

js面向对象三大特征

面向对象三大特征: 一、 封装:隐藏内部的细节,不暴露在外面(不让其它访问仅能自己访问) //在js中利用函数的作用域来模拟 // 封装 let Pet=function (name,types) { this.name=name; //封装,将变量用一个关键字声明,这样外面就不能访问了 let _types=types; }; //将相同的方法或属性放在原型链上,方便代码...

z1783883121的博客 1744

Javascript 面向对象编程(一):封装

一、Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通; 单体应用:ALL IN ONE 微服务:每一个功能元素最终都是一个可独立替换和...

飘 330

JS面向对象的核心概念:封装、继承和多态——什么是封装?什么是继承和多态。什么是对象原型,它是怎么通过对象原型实现封装和继承的?什么又是原型链,又怎么通过原型链实现多态?

封装:将数据和行为封装在对象中,通过接口与外部交互,隐藏内部细节。继承:子类可以继承父类的属性和方法,避免重复代码。多态:子类可以重写父类的方法,同样的方法在不同对象上表现出不同的行为。对象原型:对象通过原型实现继承,每个对象都有一个原型,方法和属性通过原型链共享。原型链:对象通过原型链进行属性和方法的查找,沿着链条直到。

m0_73487394的博客 1104

js面向对象编程一:封装

js是面向对象编程的语言,既是它的函数,数组,属性都是对象,可以设置对象的属性和方法。 一.生成对象的原始模式 假定把猫看成一个对象,它有name和color两个属性. var cat = { name:'', color:'' } 现在,我们需要根据这个原型对象的规格,生成两个实例对象. var cat1 = {...

黑客与画家 294

js:面向对象编程,带你认识封装、继承和多态

本文首发于我的个人网站:http://cherryblog.site 周末的时候深入的了解了下javascript的面向对象编程思想,收获颇丰,感觉对面向对象编程有了那么一丢丢的了解了~很开森什么是面向对象编程 先上一张图,可以对面向对象有一个大致的了解,然而什么是面向对象呢,用java中的一句经典语句来说就是:万事万物皆对象。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完

sunshine940326的博客 1万+

JS面向对象编程

面向对象编程思想 面向对象编程是一种编程思想,这种思想有几个主要的特性,分别体现在以下四方面: 抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类。对类进行实例化得到对象。 封装:封装可以使类具有独立性和隔离性;保证类的高内聚。只暴露给类外部或者子类必须的...

阳光下的冷静的博客 2173

js面向对象1:封装

主旨:如何"封装"数据和方法,以及如何从原型对象生成实例。 对象 string,number,null,undefined,布尔值,是js的简单类型。 其他的所有值都是对象:如数组,函数,正则表达式,对象。 对象的类型 内置对象 宿主对象 自定义对象 继承属性 自有属性 创建对象的方法 对象直接量 var book={ "main title":"javaScript", "for":"all a...

crushh_fun的博客 189
上一篇: 在变化的布局中动态裁剪图像技术
下一篇: Joomla学习–如何在文章中插入模块
凄凄迷人
博客等级 码龄21年 58粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值