js 封装学习

从0开始学习JavaScript--JavaScript对象封装 JavaScript中的对象封装是一种重要的编程概念,它允许将数据和方法组织成一个独立的单元,实现了数据的保护和抽象。本文将深入探讨JavaScript对象封装的原理、实践和最佳实践。封装是面向对象编程的基础概念之一,它强调将数据和行为组合成一个单一的单元,并通过访问器方法来控制对数据的访问和修改。下面介绍如何使用构造函数和闭包创建封装对象,以及封装的优势。构造函数是一种用于创建对象的特殊函数,通过构造函数可以初始化对象的属性。通过将属性和方法添加到构造函数中,我们可以创建具有封装特性的对象。 使用闭包创建 阅读详情
/*******************************************************************************************************************
                   可见性           定义位置        语法                                                                       引用方式
私有成员       对象内部        构造器内        在构造器内定义的var变量和function函数                      对象内部直接引用
实例成员       全局              构造器内外     prototype和this方式                                                对象实例化后引用
类成员          全局              构造器外        funcN.property=value;funcN.methN=method/func    直接构造函数名引用
*******************************************************************************************************************/
/********************************************** 公共类 *******************************/
function publicJS(){}
publicJS.prototype.$=function(obj){return document.getElementById(obj);}
publicJS.prototype.$$=function(obj){return document.getElementsByName(obj);}//返回的是数组
publicJS.prototype.$$$=function(obj){return document.getElementsByTagName(obj);}//返回指定名字的元素集合
/********** 去除所有空格 */
publicJS.prototype.trimAll=function(strvalue){
    var result = strvalue.replace(/\s+/g,"");
    return result;
}
/********** 去除两头空格 */
publicJS.prototype.trim=function(strvalue){
    var result = strvalue.replace(/(^\s*)|(\s*$)/g,"");
    return result;
}
/********** 去除左边空格 */
publicJS.prototype.trimLeft=function(strvalue){
    var result = strvalue.replace(/(^\s*)/g, "");
    return result;
}
/********** 去除右边空格 */
publicJS.prototype.trimRight=function(strvalue){
    var result = strvalue.replace(/(\s*$)/g,"");
};
/********************************************验证数据类 **********************************/
function checkinfo(){//构造函数
    if(isNaN(this.mydefault)){
        this.mypublic=new publicJS();
    }
}
/*****************判断字符串是否为空 空 true 否则 false 方法中自动去除空格*/
checkinfo.prototype.checkEmpty=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    if(str==""){return true;}
    else{return false;}
}
/*****************判断字符串是否相等 相等 true 否则 FALSE 方法中自动去除空格*/
checkinfo.prototype.checkEqual=function(strvalue,equalstr){
    var strv = this.mypublic.trim(strvalue);
    var stre = this.mypublic.trim(equalstr);
    if(strv==stre){return true;}
    else{return false;}
}
/*****************验证邮箱格式 正确返回true 否则 FALSE 方法中自动去除空格*/
checkinfo.prototype.checkMail=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    var reg=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    var result = reg.test(str);
    return result;
}
/*****************验证手机号码格式 正确返回 true 否则 FALSE 方法中自动去除空格*/
checkinfo.prototype.checkMobilPhone=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    var reg= /^(13[0-9]{9})|(15[89][0-9]{8})$/
    var result = reg.test(str);
    return result;
}
/*****************验证家庭电话格式 正确返回 true 否则 FALSE 方法中自动去除空格*/
checkinfo.prototype.checkPhone=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    var reg =  /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
    var result = reg.test(str);
    return result;
}
/*****************验证邮编格式 正确返回 true 否则 FALSE 方法中自动去除空格*/
checkinfo.prototype.checkPostCode=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    var reg = /^[1-9][0-9]{5}$/;
    var result = reg.test(str);
    return result;
}
/****************验证身份证号格式 正确返回 true 否则FALSE 方法中自动去除空格*/
checkinfo.prototype.checkIdentityCard=function(strvalue){
    var str = this.mypublic.trim(strvalue);
    var idcard=str;
      var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!",
                         "身份证号码校验错误!","身份证地区非法!");
      var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",
               32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",
               45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",
               64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
      var idcard,Y,JYM;
      var S,M;
      var idcard_array = new Array();
      idcard_array = idcard.split("");
      if(area[parseInt(idcard.substr(0,2))]==null) alert( Errors[4]);
      switch(idcard.length){
        case 15:
              if((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}$/;//测试出生日期的合法性
            }else{
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
              }
              if(ereg.test(idcard))
                alert( Errors[0]);
              else
                alert( Errors[2]);
            break;
          case 18:
            if(parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
                      ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
            }else{
                    ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
            }
            if(ereg.test(idcard)){
                  S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
                    (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
                    (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
                    (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 +
                     parseInt(idcard_array[9]) * 3 ;
                  Y = S % 11;
                  M = "F";
                  JYM = "10X98765432";
                  M = JYM.substr(Y,1);
                if(M == idcard_array[17])
                    alert( Errors[0]);
                else
                    alert( Errors[3]);
            }else
                  alert( Errors[2]);
            break;
          default:
            alert( Errors[1]);
            break;
      }
};




JavaScript学习与函数封装实践包 JavaScript是一种高级的、解释型编程语言,在Web开发中占据了不可替代的地位。它不仅可以用来制作网页上的动画和交互效果,还是前端开发的核心技术之一。作为初学者,首先要理解JavaScript的基本概念,包括变量、数据类型、运算符和控制结构等。函数封装是一种编程技术,其目的是将一段代码的执行逻辑包裹在一个独立的单元中,这个单元就是一个函数。通过函数封装,可以将复杂的逻辑隐藏起来,只暴露一个简单的接口供外部调用。 阅读详情

相关推荐

AGX Orin 部署PyTorch与Torchvision 2026避坑指南

本文提供了2026年在AGX Orin开发板上部署PyTorch与Torchvision的详细避坑指南。针对ARM64架构和JetPack 6.2系统,重点解决了Python 3.10环境配置、官方wheel包安装、torchvision源码编译等关键步骤,并分享了常见问题解决方案和性能优化技巧,确保深度学习环境稳定运行。

sky77的博客 752

前端Leetcode刷题

1 两数之和 function sum(numbers,target){ let map=new Map() for (let i=0,len=numbers.length;i<len;i++) { if(map.has(target-numbers(i))){ return [map.get(target-numbers(i)),i] }else{ map.set(numbers(i),i) } } } 2 链表反转 function reverseList(he

weixin_44208404的博客 1257

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 994

js中方法的封装

为什么要进行方法的封装?在平时的生产环境中,我们经常写出这样的代码:function fAdd(iA,iB){ return iA+iB; } function fMul(iA,iB){ return iA-iB; }其本质上是这样的:var fAdd = function(iA,iB){ return iA+iB; } var fMul = function(iA,iB){

小花的前端博客 1058

手把手教你用Matlab实现Copula函数:从理论到代码的完整指南

本文提供了一份在MATLAB中实现Copula函数的完整实战指南。从理解Sklar定理和常见Copula家族(如高斯、t、Clayton)的核心概念出发,详细讲解了数据预处理、边缘分布拟合、概率积分变换等关键步骤。通过具体代码示例,手把手演示了Copula模型的拟合、评估、蒙特卡洛模拟,并进阶应用于金融风险度量(如VaR计算)和条件分布分析,帮助读者掌握这一强大的多变量依赖建模工具。

y9z0a1b的博客 953

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 332

js如何创建类(封装)

学过其他面向对象语言的JavaScripter,可能都应用过类,如:class{},等定义的一系列方法, 但是初学者看是学习js的时候,经常会看到这样一句话,那就是JavaScript是面向对象语言,可是自己无论怎么学习,都不太清楚面向对象编程,我也是如此,开始一直纠结js面向对象编程,这几天算是有所了解了,谈谈我对js类的理解。。。所谓类,会有以下功能: 构造器 静态属性,静态方法 共有属性,共

xi_2130的博客 2万+

【CAN总线测试】——通讯相关诊断测试

本章主要介绍通讯相关诊断测试用例设计

LOVE135149的博客 1815

js基础笔记学习150-封装函数2

前端

qq_41632427的博客 99

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

PyQt5简介和安装

在initUI方法中,设置了窗口的标题和大小,并创建了一个按钮。PyQt5是一个功能强大的Python界面开发框架,可以轻松创建跨平台的图形用户界面应用程序。本文介绍了PyQt5的简介和安装方法,并提供了一个简单的示例应用程序来演示PyQt5的基本用法。PyQt5是一个功能强大的Python界面开发框架,它提供了丰富的工具和组件,用于创建跨平台的图形用户界面(GUI)应用程序。信号是控件发出的事件,槽是与之关联的处理函数。接下来,我们将编写一个简单的PyQt5应用程序,以演示PyQt5的基本用法。

XdKwargs的博客 222

学习记录-js进阶-模块封装

内含个人思想,欢迎讨论指正

sinbowper的博客 436

AUTOSAR从入门到精通-中间件通信DDS(一)

汽车开放系统架构(automotive open system architecture,autosar)是由全球各大汽车oem、零部件供应商、汽车电子软件公司联合建立的一套标准协议。该协议规范了一个符合汽车电子软件开发的、开放的以及标准化的软件架构。最初的autosar规范的制定只考虑传统汽车电子电器架构,基于硬件算力有限场景,提供确定的功能。

getusushu的博客 1869

vue学习之JS封装

我是一个菜鸟还需努力,一起都是自己观点,不喜勿喷。 导入js文件有很多种方式,我喜欢使用这种,感觉跟框架导入很相似。没有多余的沉湎。 定义一个js文件,比如util.js import Vue from "vue"; //==============================StringUtil================================= cons...

zhaofengdeng的博客 4831

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[js高手之路]javascript腾讯面试题学习封装一个简易的异步队列

这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包封装一个创建li元素的函数. 1 var create = (function(){ 2 var c...

weixin_34081595的博客 110

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

小陈学习JS 函数案例练习:利用函数封装方式,翻转任意一个数组 reverse()

分析:

weixin_50419323的博客 861

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JS学习之动画函数的封装

摘要变成了必填项,我只想睡一个好觉傻逼室友别再bb讲话了

weixin_53317758的博客 367

封装js插件学习指南

封装js插件学习指南 1、原生JavaScript插件编写指南 =>传送门 2、如何定义一个高逼格的原生JS插件=>传送门 3、手把手教你用原生JavaScript造轮子=>传送门 转载于:https://www.cnblogs.com/momozjm/p/9390428.html...

weixin_34378922的博客 151

【JavaScript学习】JavaScript 常用工具类封装

文章目录获得浏览器地址所有参数将json转为get参数 获得浏览器地址所有参数 // 获得浏览器地址所有参数 function getQueryString() { var qs = location.search.substr(1), // 获取url中"?"符后的字串 args = {}, // 保存参数数据的对象 items = qs.length ? qs.split("&") : [], // 取得每一个参数项

Tellsea 906

JavaScript学习:缓冲运动的封装

逆战学习 整理一下如何进行缓冲运动的封装 运动的原理 改变运动物体其自身的属性,比如宽高,位置,透明度等等 属性–css属性 要完成这个缓冲运动的封装,首先要利用以下的方法和知识 1.获取任意的css属性值 获取要操纵的元素或者要运动的元素的位置和宽高,透明度;之后才好变化 currentStyle//--兼容IE getComputedStyle//--该属性是兼容火狐谷歌,不兼容IE //上面...

weixin_45131389的博客 1577

javascript学习-封装轮播插件

封装轮播插件 在轮播功能基础上可以进行封装,改进js中Swiper函数,增加原型对象的方法,使得可以将其作为一个对象进行调用,对比原始轮播这样可以更为自由的使用。 共用部分: swiper.css: *{ margin: 0; padding: 0; box-sizing: border-box; } .swiper{ width: 1226px; height: 460px; margin: 0 auto; position: relative; } .swiper .imgList{

qq_43368682的博客 278

JavaScript函数的封装与调用学习整理

什么是函数: 实现固定功能的代码块 函数是工具,是实现功能的工具 函数是通过其中的代码,来实现所谓的功能 函数的特点: 封装: 将需要的代码,写入到函数中 重复: 一个函数可以反复调用 调用: 可以在任意需要位置上调用执行代码 函数的定义/封装有固定的语法形式 function 函数名称(函数的参数) { 函数的代码; return 内容; } 函数名称:就是这个函数的名称,之后调用函数时,是通...

MixedSignals的博客 1416

Vue.js的学习总结——组件封装

Vue.js中关于组件封装的学习总结 首先需要先了解什么是Vue组件: 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树: 举例来说:假如我们现在需要使用ElementUI中的Dialog对话框和Checkbox 多选框来写一个具...

qq_42392995的博客 334

vue js 封装 HashMap

/** * 定义一个map * 如:var map=new s.HashMap(); * */ s.HashMap=function(){ //定义长度 var length = 0; //创建一个对象 var obj = new Object(); /** * 判断Map是否为空 */ this.isEmpty = function(){ return length == 0; }; /** * 判断对象中是否包含给定Key */ this.containsKey.

今天bug有点多 3675

js学习 —— 封装的函数

封装的函数 /* 获取单个dom元素 obtain(selectStr) selectStr:选择器的字符串 */ function obtain(selectStr) { return document.querySelector(selectStr); } /* 获取多个dom元素 selectStr:选择器的名字 */ function obtainAll(selectStr) { return document.querySelector

small_sapling的博客 240
上一篇: 引发类型为System.OutOfMemoryException的异常
下一篇: 学习HTML:iframe用法总结收藏
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值