第五天 Javascript面向对象和一些常用对象

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎 本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。 阅读详情

万物皆对象,在Js中所有事物都是对象:字符串、数字、数组、日期,等等。它们都有自己的属性和方法。
属性就是一个事物是什么,有哪些特征,用变量表示。比如桌子,材料是木头,名字叫桌子一号,那么就可以设置material=”木头”,name=”桌子一号”这两个属性。方法就是一个事物能干什么,用函数表示。比如鸟会飞,飞这个动作就是它的一个方法,可以 function fly(){} 这样定义,调用 鸟.fly() 这只鸟就飞了。


Js自定义对象

无参构造函数
function Person() {
    //定义了一个Person类,和函数声明一样都是使用fuction关键字
}

var person = new Person();
//使用new关键字生成一个Person对象

person.name = "jack";
person.age = 23;
//定义属性

person.work = function() {
    window.document.write("在工作<br/>");
};
//定义方法

window.document.write(person.constructor + "<br/>");
window.document.write(person.name + "," + person.age + "<br/>");
person.work();
//调用这个person对象的属性和方法
有参构造函数
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.work = function() {
        alert(this.name + ":" + this.age);
    }
    //this关键字指代类本身
}

var person = new Person("jack", 28);
person.work();
//需要传对应的参数才能创建对象
Object方式
var person = new Object();
person.name = "jack";
person.age = 28;
person.sayHello = function() {
    document.write(this.name + ":" + this.age);
}
person.sayHello();
//不声明类,而是直接用Object类来生成对象
//缺点是不能复用

Js基本数据类型包装类

Js提供了3个特殊的引用类型:Boolean,Number,String。
当读取基本数据类型时,后台就会创建一个对应的基本包装类对象。
我们在操作基本数据类型时,可以直接调用一些方法。

Boolean
var a = false;
var a1 = new Boolean(false);
//第二种方式是采用生成对象的方法创建一个Boolean对象,但明显第一种方式会简洁些,两者功能上并无区别,因为采用第一种方式时后台已经帮我们包装成一个对象了。
document.write(a.constructor + "<br/>");
//会输出a的构造器代码
document.write(a.toString() + "<br/>");
//会把a转换成String输出,也就是"false"
document.write(a.valueOf() + "<br/>");
//返回a的原始值
if (a.valueOf()) {
    document.write("条件成立<br/>");
} else {
    document.write("条件不成立<br/>");
}
Number
Number的比较
var a = 12;
var b = new Number(12);
//创建number对象
document.write(a == b);
//比较数值,返回true
document.write(a === b);
//全等于先比较类型,a类型是number,b类型是object,所以false
document.write(new Number(12) == new Number(12));
//这是两个不同的对象,所以false
document.write(new Number(12) === new Number(12));
//同上,false
document.write(new Number(12).valueOf() == new Number(12).valueOf());
//比较两个对象的值,都是12,所以true
document.write(new Number(12).valueOf() === new Number(12).valueOf());
//同上,true
属性和方法

最大值:Number.MAX_VALUE
最小值:Number.MIN_VALUE
方法:
toString()转字符串
toString(x)转字符串,不过数字会转为x进制表示
toFixed()保留整数
toFixed(x)保留x位小数

String
//通过构造函数创建String 对象
var b = new String("java");
var c = new String("java");
document.write(b + "," + c);
document.write(b == c);
//对象比较,false
document.write(b.valueOf() == c.valueOf());
//值比较,true
document.write(a.length);
//获得a的长度

常见的方法:
Anchor() 添加锚点,用于页面内跳转
Blink() 为元素添加blink标签,只有火狐浏览器支持,文字会闪烁
charAt() 返回字符串指定索引位置处的字符。
charCodeAt() 返回一个整数,代表指定位置上字符的 Unicode 编码。
Concat() 返回字符串值,该值包含了两个或更多个提供的字符串的连接。
Fontcolor() 把带有 color属性的 <font> 标签放置在字符串两端
indexOf() 返回 String 对象内第一次出现子字符串的字符位置
italics() 把 HTML <i> 标签放置在字符串两端
Link() 把一个有href 属性的 HTML 锚点放置在字符串两端
Replace() 返回根据正则表达式进行文字替换后的字符串的副本
Split() 切割
Substr() 截取子串
toUpperCase() 转大写
toLowerCase 转小写


Js常用对象

Math
Math.ceil(12.34);
//上取整,13
Math.floor(12.34);
//下取整,12
Math.round(12.54);
//四舍五入,13
Math.round(12.35);
//12
Math.random();
//生成0~1中的随机数
Math.max(12, 100, -1, 200, 320, 500);
//取最大值
Math.min(12, 100, -1, 200, 320, 500);
//取最小值
Date
function showDate() {
    var date = new Date();
    //获取系统时间
    var str = date.getFullYear() + "年"
     + (date.getMonth() + 1) + "月"  //注意月这里要加一
     + date.getDate() + "日" 
     + "星期" + date.getDay() + " " 
     + date.getHours() + "时" 
     + date.getMinutes() + "分" 
     + date.getSeconds() + "秒";
    //获取年月日时分秒
    document.getElementById("time").innerHTML=str;
    //显示在html中
    window.setTimeout("showDate()", 1000);
    //调用定时函数
}
//调用函数
showDate();

运行结果:
2017年10月23日星期1 11时0分0分11秒

定时函数有两个:
setInterval(代码, 毫秒数) 每经过指定毫秒值后执行指定的代码。
setTimeout(代码, 毫秒数) 经过指定毫秒值后执行指定的代码(只执行一次)。
上面的代码中,使用setTimeout能重复执行更新时间是因为在函数中又调用了setTimeout,形成了递归。

Array
数组定义:
//JS数组可以动态增长
var arrs1=new Array();//不指定长度
var arrs2=new Array(20);//指定长度
//每一项的默认值是undefined
var arrs3=new Array("hello");//指定元素
var arrs4=["aa","bb","cc"];//创建一个包含3个字符串的数组
var arrs5=[];//创建一个空数组
arrs5[0]="xx";//新增第1项
数组遍历:
for(var i = 0; i < arr.length; i++){
    alert(arr[i]);
}   
//或
for(var i in arr){
    alert(arr[i]);
}
//i是遍历出的数组中的索引,从0开始,一直到最大索引。
//如果有其他属性,也会遍历出来,其实索引就是数组对象的属性。
常见方法:
  • sort()
    对当前数组进行排序,并返回已经进行了排序的此Array对象。
    不会创建新对象,是在指定数组中直接进行排序。
  • reverse()
    对当前数组进行反转排序,返回一个元素顺序被反转的 Array 对象。
    不会创建新对象,是在指定数组中直接进行排序。
  • push( [item1 [item2 [… [itemN ]]]] )
    将以新元素出现的顺序添加这些元素。
    如果参数之一为数组,那么该数组将作为单个元素添加到数组中。
  • pop()
    移除数组中的最后一个元素并返回该元素。
    如果该数组为空,那么将返回 undefined。
  • shift()
    移除数组中的第一个元素并返回该元素。
    如果该数组为空,那么将返回 undefined。
  • unshift([item1[, item2 [, … [, itemN]]]])
    将指定的元素插入数组开始位置并返回该数组。
  • splice(start, deleteCount, [item1[, item2[, … [,itemN]]]])
    移除从 start 位置开始的指定个数的元素,并插入新元素,从而修改
  • concat([item1[, item2[, … [, itemN]]]])
    返回一个新数组,这个新数组是由两个或更多数组组合而成的。原数组不变。
    要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。
    如果某一项为数组,那么添加其内容到 array1 的末尾。
    如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
  • slice(start, [end])
    返回一个包含了指定的部分元素的数组。
    将返回索引大于等于start且小于end的一段。
    原数组不变。
  • join(separator)
    把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。
    如果数组中有元素没有定义或者为 null,将其作为空字符串处理。

prototype(Js原型)

“prototype”翻译成”原型”,是js实现继承的主要手段。
粗略来说就是:prototype是js中的函数(function)的一个保留属性,并且它的值是一个对象(我们可以称这个对象为”prototype对象”)。
原型法的主要思想是,有1个A类,我想要创建一个B类,这个类以A类作为原型,并且能进行扩展。我们称B类的原型为A。

<script type="text/javascript">
function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}//定义了一个employee类
var bill=new employee("Bill Gates","Engineer",1985);
//生成了bill对象
employee.prototype.salary=null;
//为employee的原型类(默认是object类)添加一个属性salary,并赋初值为null
bill.salary=20000;
//bill本来没有salary属性的,但经过上一步操作就从原型类中继承到了salary属性
document.write(bill.salary);
</script>

作业

Js实现进度条控制

Js进度条
单击开始按钮进度条开始增加,开始按钮不可再被点击。
单击暂停按钮,进度条暂停,暂停按钮变为继续按钮。
单击继续按钮,进度条继续增加,继续按钮变为暂停按钮。
进度条100%后停止增加,此时所有按钮不可被点击。
代码:

<head>
    <title>进度条</title>
    <meta charset="utf-8" />
    <style type="text/css">
        .processcontainer {
            width: 450px;
            border: 1px solid #6C9C2C;
            height: 25px;
        }   
        #processbar {
            background: orange;
            float: left;
            height: 100%;
            text-align: center;
            line-height: 150%;
        }
    </style>
    <script type="text/javascript">
        var bartimer;
        var pausebutton;
        var startbutton;

        window.onload=function(){
            pausebutton = document.getElementById("pause");
            startbutton = document.getElementById("start");
            pausebutton.disabled=true;
        }
        function start() {
            bartimer = window.setInterval(function() {
                setProcess();
            }, 100);
            startbutton.disabled=true;
            pausebutton.disabled=false;
        }

        function pause() {
            window.clearInterval(bartimer);
            pausebutton.innerText = "继续";
            pausebutton.onclick = function(){goon()};
        }

        function goon() {
            start();
            pausebutton.innerText = "暂停";
            pausebutton.onclick = function(){pause()};;
        }

        function setProcess() {
            var processbar = document.getElementById("processbar");
            processbar.style.width = parseInt(processbar.style.width) + 1 + "%";
            processbar.innerHTML = processbar.style.width;
            if(processbar.style.width == "100%") {
                pausebutton.disabled=true;
                window.clearInterval(bartimer);
            }
        }

    </script>
</head>

<body>
    <div class="processcontainer">
        <div id="processbar" style="width:0%;"></div>
    </div>
    <button id="start" onclick="start()">开始</button><button id="pause" onclick="pause()">暂停</button>
</body>
Js按键控制div块

div块
如图一个div块,用上下左右箭头键控制其移动。
代码:

<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        .block {
            position: relative;
            background: orange;
            width: 100px;
            height: 100px;
        }
    </style>    
</head>

<body>
    <div id="block" class="block"></div>    
    <script>
        var block;
        window.onload = function() {
            block = document.getElementById("block");
            block.style.left="100px";
            block.style.top="100px";
        }
        document.onkeydown = function(event) {
            var evt = event || window.event || arguments.callee.caller.arguments[0];
            if(evt.keyCode) {
                //keycode 37 = Left
                //keycode 38 = Up
                //keycode 39 = Right
                //keycode 40 = Down
                if(evt.keyCode == 37) {
                    block.style.left=block.offsetLeft-20-8+"px";
                }
                if(evt.keyCode == 38) {
                    block.style.top=block.offsetTop-20-8+"px";
                }
                if(evt.keyCode == 39) {
                    block.style.left=block.offsetLeft+20-8+"px";
                }
                if(evt.keyCode == 40) {
                    block.style.top=block.offsetTop+20-8+"px";
                }
            }
        }
    </script>
</body>
经典密码体制(上) 头歌 阅读详情

相关推荐

Keil5安装包别乱下!手把手教你从官网精准下载C51/V960和MDK5,并完成2032年有效注册(避坑网络资源失效)

本文详细介绍了如何从Keil官网安全下载C51 V9.60和MDK5开发环境,并提供2032年有效注册的完整指南。通过验证安装包完整性、自定义安装路径和长期激活方案,帮助开发者避开网络资源陷阱,搭建稳定的STM32开发环境。

weixin_26886855的博客 529

是时候谈谈JavaScript面向对象了!(我们什么时候更需要它)

前端技术尤其是JavaScript,经常被后端觉得不是正经编程语言,大多数是因为JavaScript是基于函数的语言,因此潜在上使得它在使用和发展上有所局限。 我记得在90年代末和21世纪初,JavaScript主要用于使html页面更加动态。比如实现一些弹窗,跑马灯之类的视觉效果。 现在,我们有很多框架,库,甚至后端系统都在使用JavaScript。用JavaScript开发一个移动应用和桌面应...

weixin_33948416的博客 370

手把手教你搭建硬件在回路(HIL)仿真系统:从Simulink建模到实时测试

本文详细介绍了如何从零开始搭建硬件在回路(HIL)仿真系统,涵盖Simulink建模、实时仿真、代码生成及调试等关键步骤。通过具体配置示例和优化技巧,帮助开发者解决复杂控制系统验证中的技术难题,提升半实物仿真的效率和可靠性。

weixin_30952535的博客 445

高阶javascript第五天:体验面向对象的编程

本篇主要讲述了高阶javascript中面向对象的类的有关知识内容,体验面向对象编程的过程.

2301_77094163的博客 99

Vivado与VCS+Verdi联合仿真环境搭建全攻略

本文详细介绍了如何搭建Vivado与VCS+Verdi联合仿真环境,旨在解决Vivado Simulator在大型FPGA验证中速度慢、调试弱的问题。通过指导工具版本配对、环境变量设置、关键参数配置及Xilinx仿真库编译,帮助工程师高效整合Vivado的设计管理、VCS的高速仿真与Verdi的深度调试能力,从而显著提升验证效率。

weixin_29219189的博客 576

华为数通---配置风暴控制案例

风暴控制可以通过阻塞报文或关闭端口来阻断广播、未知组播和未知单播报文的流量。

2301_77081516的博客 1624

JavaScript基础 JavaScript第五天 1. 对象

JavaScript基础 JavaScript第五天 1. 对象

代码改变世界 405

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2654

JavaScript第四天(面向对象,构造函数和原型)高级

JavaScript第四天(面向对象,构造函数和原型)

ingenuou_的博客 344

37.华为路由器:loopback(本地回环)接口的作用

本地环回接口(或地址),亦称回送地址(loopback address)。 此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途: 1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址 ,管理员会使用该地址对路由器远程登录(telnet ),该地址实际上起到了类似设备名称一类的功能。 但是通常每台路由器上存在众多接口和地址,为何不从当中随便挑选一个呢 ? 原因如下:由于

迷逝 3万+

C# 上位机高级功能实战:报警、历史回放与远程监控

本文介绍了工业上位机系统的高级功能实现,主要包括实时报警机制、历史数据回放和远程监控三部分。报警功能通过阈值检测实现异常提醒;历史回放利用数据库存储数据,通过定时器控制回放进度;远程监控提供TCP、WebSocket等多种数据传输方式。文章还给出了综合优化建议,如异步处理、报警去抖动等,最终形成一个包含数据采集、显示、存储、报表及高级功能的完整工业自动化闭环系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 750

JS基础 第五天 对象

1.对象的介绍 ​ 对象是一种复杂的数据类型,它可以把数据关联起来 万物皆对象 ​ 特点:里面的数据是无序的 2.对象的使用 ​ 声明对象:let 对象名 = { }; ​ 使用对象: ​ 一提对象,对象都具有属性和方法 ​ 对象中有属性,属性由属性名和属性值构成,也可以有方法,方法就是方法名:function() {} ​ let 对象名 = { ​ 属性名:属性值,(也叫键值对、成员) ​ uname:'刘佳慧', ​ 方法名:function () { ​ } ​ ....

summer_66的博客 140

图机器学习(1)——图论基础

图 (Graph) 是一种描述实体间关系的数学结构,几乎在各个领域都有应用。例如,社交网络就是图,其中用户之间的连接取决于一个用户是否“关注”另一个用户。图论,即对图的研究,一直以来广受关注,包含了大量算法、性质分析方法和数学模型,以解析复杂系统的行为特征。本节将介绍图数据结构的核心概念,通过理论阐述与实例演示相结合的方式,理解基础理论用以实践应用。重点介绍用于创建、操作和研究复杂网络结构与功能的 Python 库。

盼小辉丶的博客 9051

学习前端第五天-JS基础

​。

m0_68274160的博客 783

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

30天JS挑战(第五天)

所有内容均上传至gitee,答案不唯一

a20820888的博客 1095

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JavaScript第五天

对象是一种数据类型, 是一种无序的数据集合用多个变量保存散乱, 用对象比较统一保存用户信息, 姓名年龄电话…用之前的数据类型不方便, 很难区分。

一位自学前端开发学者 210

老版QQ原生表情gif动态

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

JavaScript第五天学习总结—— 对象、创建对象的三种方式、遍历对象

对象的相关概念 什么是对象? 在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。 对象是由属性和方法组成的 属性:事物的特征,在对象中用属性来表示(常用名词) 方法:事物的行为,在对象中用方法来表示(常用动词) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxMlEWd1-1628091491881)(C:\Users\26036\Desktop\images\图片3.png)]

weixin_52819925的博客 820

学习JS的第五天

学习JS的第五天 一、arguments对象 在调用函数时,浏览器每次都会传递两个隐含的参数 ​ 1、函数上下文对象this ​ 2、封装实参的对象arguments (arguments的作用就是封装实参) arguments是一个类数组对象,它可以通过索引(下标)来操作数据,也可以获取长度 在调用函数时,所传递的实参会全部保存在arguments里面 即使没有形参,也可以使用arguments ,如果需要调取参数, 则使用 (表示第一个参数)arguments[0]、(表示第二个参数)a

qq_42061122的博客 168

JavaScript第五天数组

JavaScript中的对象和数组都是数据类型,用于存储和组织数据。对象是一种复杂的数据类型,可以存储多个键值对。每个键值对由一个键(属性名)和一个值(属性值)组成。可以通过键来访问对象中的值。对象的属性可以是字符串、数字、布尔值、函数或其他对象。对象的属性是无序的,可以动态地添加、修改和删除。数组是一种有序的数据类型,可以存储多个值。每个值都有一个索引,可以通过索引来访问数组中的值。数组可以包含任意类型的值,包括字符串、数字、布尔值、函数、对象和其他数组。

m0_74242675的博客 669

javascript基础学习第五天(对象)

javascript基础学习之对象 对象想必大家都理解是什么意思,但这编程语言里边也“有对象”,此对象非彼对象,此“对象”是来存放数据信息,并不是大家所理解的牵手的对象哈(憨憨傻笑)! 对象介绍 对象是用来存放数据跟我们前边讲的数组不同,对象存放的数据比数组更强大,它存放的比如:个人信息数据,商品信息数据等等… 对象组成 var obj = {}//这就是一个对象的创建 对象里采用的是键值对...

hackerhua的博客 195

JavaWeb学习第五天之JS

<script>age: 20,</script>

m0_75213259的博客 827

JavaScript 学习笔记(第五天)

JavaScript笔记

weixin_74155781的博客 293

JavaScript基础学习第五天

目录内置对象自定义对象对象种类String 字符串Data 日期Array 数组Math 对象 内置对象 JavaScript中的所有事物都是对象,带有各自的属性和方法。 允许自定义对象 自定义对象 定义并创建对象实例 使用函数来定义对象,然后创建新的对象实例 <script> student = new Object(); //自定义对象1-1 定义并创建实例 ...

JingDuiTell的博客 253

【JavaScript】js高级第一天(笔记总结)

JavaScript高级第一天 阶段计划 面向对象基本概念以及使用 原型相关扩展一些数组的原型方法 函数进阶使用方法 正则表达式 Es6 今日目标 什么是面向对象 类和对象关系 使用class创建自定义类 说出什么是继承 完成tab栏切换案例 一、面向过程与面向对象 1、编程思想 面向过程 面向对象 2、面向过程(POP) 面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 举个例子:将大象装进冰箱,面向过程做法 面向过程,就是按照

一个前端开发者 780

黑马程序员JS第五天

对象 • 什么是对象 • 对象使用 • 操作对象 • 遍历对象 • 内置对象 1、什么是对象 对象是什么 对象(object):JavaScript里的一种数据类型 可以理解为是一种无序的数据集合 用来描述某个事物,例如描述一个人 人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能 如果用多个变量保存则比较散,用对象比较统一 比如描述 班主任 信息: 静态特征 (姓名, 年龄, 身高, 性别, 爱好) => 可以使用数字, 字符串, 数组, 布尔

m0_52177571的博客 322

JavaScript基础第五天

简单来说,对于0-10的随机数,math.random()生成一个0-1之间的随机小数,*(10+1),此时生成0-11之间的数字,因为random的特性所以是[0,11)左闭右开,始终取不到11,得到大于10的小数,这时用floor向下取整函数,此时可以使大于10的数统统等于10,此时可以实现[1,10]的取值操作。因为对于多次词属性或者-等属性,点操作就不起作用了,这使可以用 对象['属性']方式(单引号和双引号都可以),[]里面的值如果不加引号,默认会当成变量解析。

qq_62955738的博客 728
上一篇: 第四天 Javascript基础教程
下一篇: 第六天 JSON和AJAX基础教程
风沐流萤
博客等级 码龄14年 31粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值