
javascript
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果
Serena_tz
write less,do better️️️
展开
-
字符串的相关方法
返回布尔值,表示参数字符串是否在源字符串的头部。返回布尔值,表示参数字符串是否在源字符串的尾部。这三个方法都支持第二个参数,表示开始搜索的位置。返回一个新字符串,表示将原字符串重复n次。返回布尔值,表示是否找到了参数字符串。转载 2023-01-05 16:13:49 · 177 阅读 · 0 评论 -
异步回调promise
在promise原型里有then和catch方法,resolve由then方法提供,reject由catch方法提供。then方法表示的是成功之后的回调;catch方法表示的是失败之后的回调。实例状态全部成功,返回的承诺对象状态才是成功。实例状态任意一个成功,返回的承诺对象状态就是成功。async使用:等待一个函数执行完毕后,执行另外一个函数。resolve 和 reject 回调函数由谁提供?实例状态返回请求先成功的那一个。转载 2023-01-05 14:45:40 · 350 阅读 · 0 评论 -
uni-app引入海康威视h5player实现视频监控的播放
因为web-view组件默认就是占据整个视口的高宽,所以我们需要设置web-view的宽高,调整位置。将demo中bin文件夹下的文件原封不动复制到h5player文件夹中,txt文件可以删除。在uni-app应用内,pages页面中需要用到视频播放的页面,创建web-view组件。在uni-app项目中static文件夹下创建文件目录,我命名为h5player。在webplayer.html文件中,新增样式,宽高根据自己的需求调整。web-view组件的src需要动态改变,所以存储在data数据里。原创 2022-12-02 13:45:12 · 12747 阅读 · 63 评论 -
JavaScript遍历数组和对象的方法
for in 循环,数组和对象都可以遍历,item为array的下标,或者object的key。for of只能遍历数组,item为数组元素的值。原创 2022-11-25 17:13:25 · 357 阅读 · 0 评论 -
JavaScript/uni-app对接海康ISC openapi
下载海康开放平台的签名生成工具,阅读开发指南,获得签名,对比一下我们自己用js方法生成的签名,检查js方法是否正确。修改appKey,appSecret,接口地址,点生成签名按钮,得到我们需要的签名。JavaScript实现HMAC SHA256算法实现基于crypto-js。也可以在封装http请求的时候,直接动态生成一个签名,加入到请求头中。安装完成,在uni-app项目中出现crypto-js文件目录。可以创建文件signature.js,生成一个签名然后暴露出去。支持ES6导入、Modular。原创 2022-11-21 13:48:40 · 3032 阅读 · 3 评论 -
格式校验js(手机号格式校验、邮箱格式校验、IP地址合法校验)
JavaScript实现格式校验:将json格式转成echart data格式、手机号格式校验、邮箱格式校验、IP地址合法校验原创 2022-06-01 10:15:49 · 1142 阅读 · 0 评论 -
js获取项目的ip和端口
js 获取项目的 ip 和端口号,得到的结果类似于:http://localhost:8082var cur = window.document.location.href;var pathname = window.document.location.pathname;var pos = cur.indexOf( pathname );var localhostPath = cur.substring( 0, pos );console.log( localhostPath );参考文章:转载 2021-09-14 15:23:30 · 4523 阅读 · 0 评论 -
JavaScript控制对象状态
有时候,需要冻结对象的读写状态,防止对象被改变。JavaScript提供了三种冻结方法,最弱的一种是Object.preventExtensions,其次是Object.seal,最强的是Object.freeze。1 Object.preventExtensions()Object.preventExtensions方法可以使得一个对象无法再添加新的属性。var obj = new Object();Object.preventExtensions(obj);Object.defineProp转载 2021-05-24 16:38:45 · 276 阅读 · 2 评论 -
Object对象的拷贝
有时候,我们需要将一个对象的所有属性,拷贝到另一个对象,可以用下面的方法实现。var extend = function (to, from) { for (var property in from) { to[property] = from[property]; } return to;}extend({}, { a: 1})// {a: 1}上面这个方法的问题在于,如果遇到存取器定义的属性,会只拷贝值。extend({}, { get a() { ret转载 2021-05-24 16:14:46 · 753 阅读 · 0 评论 -
Object.prototype.propertyIsEnumerable()
实例对象的propertyIsEnumerable()方法返回一个布尔值,用来判断某个属性是否可遍历。注意,这个方法只能用于判断对象自身的属性,对于继承的属性一律返回false。var obj = {};obj.p = 123;obj.propertyIsEnumerable('p') // trueobj.propertyIsEnumerable('toString') // falseobj.p是可遍历的,而obj.toString是继承的属性。...转载 2021-05-24 16:11:24 · 253 阅读 · 0 评论 -
Object.defineProperty(),Object.defineProperties()
Object.defineProperty()方法允许通过属性描述对象,定义或修改一个属性,然后返回修改后的对象,它的用法如下。Object.defineProperty(object, propertyName, attributesObject)Object.defineProperty方法接受三个参数,依次如下。object:属性所在的对象propertyName:字符串,表示属性名attributesObject:属性描述对象例如:var obj = Object.defineP转载 2021-05-24 16:09:28 · 265 阅读 · 0 评论 -
Object.getOwnPropertyNames()
Object.getOwnPropertyNames方法返回一个数组,成员是参数对象自身的全部属性的属性名,不管该属性是否可遍历。var obj = Object.defineProperties({}, { p1: { value: 1, enumerable: true }, p2: { value: 2, enumerable: false }});Object.getOwnPropertyNames(obj)// ["p1", "p2"]上面代码中,obj.p1是可遍历的,ob转载 2021-05-24 15:57:24 · 2946 阅读 · 0 评论 -
Object属性的描述对象(Descriptor)
1 概述JavaScript提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为“属性描述对象”(attributes object)。每个属性都有自己对应的属性描述对象,保存该属性的一些元信息。例如:{ value: 123, writable: false, enumerable: true, configurable: false, get: undefined, set: undefined}2 属性的元信转载 2021-05-20 15:43:15 · 530 阅读 · 4 评论 -
form表单提交避坑
前端开过程,我们经常会遇到表单提交。在使用onsubmit事件时要注意避免可能的坑:html里面要写οnsubmit="return saveForm()",带return的,这样返回false的话页面才不会跳转。js里面saveForm()方法里要写return false。方法名千万不能过于简单,比如save()。一定尽量驼峰状长一些的名字,这个可能被js定义过了,所以会出现问题。另外,表单提交我们也可以直接在js中绑定事件,html不作操作,注意在一系列逻辑代码的最后加上ret原创 2021-05-06 17:14:55 · 307 阅读 · 0 评论 -
javascript基础总结深入
文章目录1 数据类型的分类和判断1.1 基本(值)类型1.2 对象(引用)类型2 数据,变量, 内存的理解3 对象的理解和使用4 函数的理解和使用1 数据类型的分类和判断1.1 基本(值)类型Number ------- 任意数值 ----------- typeofString ------- 任意字符串 -------- typeofBoolean ----- true/false ------- typeofundefined — undefined ------- typeof/===原创 2021-04-30 08:55:27 · 115 阅读 · 0 评论 -
AMD-RequireJS模块化
下载require.js, 并引入官网: http://www.requirejs.cn/github : https://github.com/requirejs/requirejs将require.js导入项目: js/libs/require.js创建项目结构|-js|-libs |-require.js|-modules |-alerter.js |-dataService.js|-main.js|-index.html定义require.js的模块代.原创 2021-04-29 08:42:54 · 98 阅读 · 0 评论 -
CMD-SeaJS模块化
下载sea.js, 并引入官网: http://seajs.org/github : https://github.com/seajs/seajs将sea.js导入项目: js/libs/sea.js创建项目结构|-js|-libs |-sea.js|-modules |-module1.js |-module2.js |-module3.js |-module4.js |-main.js|-index.html定义sea.js的模块代码mo.原创 2021-04-29 08:42:47 · 142 阅读 · 0 评论 -
ES6-Babel-Browserify模块化
定义package.json文件{"name" : "es6-babel-browserify","version" : "1.0.0"}安装babel-cli, babel-preset-es2015和browserifynpm install babel-cli browserify -gnpm install babel-preset-es2015 --save-dev定义.babelrc文件{ "presets": ["es2015"] }编码.原创 2021-04-29 08:42:30 · 128 阅读 · 0 评论 -
CommonJS-Browserify模块
创建项目结构|-js|-dist //打包生成文件的目录|-src //源码所在的目录 |-module1.js |-module2.js |-module3.js |-app.js //应用主源文件|-index.html|-package.json{ "name": "browserify-test", "version": "1.0.0"}下载browserify全局: npm install browserify -g局部: npm insta.原创 2021-04-28 16:09:05 · 137 阅读 · 0 评论 -
javascript模块化进化史
全局function模式module1.js//数据let data = 'atguigu.com'//操作数据的函数function foo() { console.log(`foo() ${data}`)}function bar() { console.log(`bar() ${data}`)}module2.jslet data2 = 'other data'function foo() { //与另一个模块中的函数冲突了 console.log(`原创 2021-04-28 16:04:41 · 143 阅读 · 0 评论 -
ES6生成器Generator 函数
ES6 新引入了 Generator 函数,可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了可能,从而为异步编程提供解决方案。1、Generator 函数组成Generator 有两个区分于普通函数的部分:一是在 function 后面,函数名之前有个 * ;函数内部有 yield 表达式。其中 * 用来表示函数为 Generator 函数,yield 用来定义函数内部的状态。function* func(){ console.log("one"); yield '转载 2021-03-15 10:30:33 · 133 阅读 · 0 评论 -
JSON数据和javascript对象对比
或者您可以已使用 JSON.parse() 函数的第二个参数,被称为 reviver。这个 reviver 参数是函数,在返回值之前,它会检查每个属性。您应该避免在 JSON 中使用函数,函数会丢失它们的作用域,而且您还需要使用 eval() 把它们转换回函数。JSON 中不允许日期对象。如果您需要包含日期,请写为字符串。JSON 中不允许函数。如果您需要包含函数,请把它写作字符串。转载 2021-03-11 16:02:38 · 205 阅读 · 0 评论 -
Ajax的核心—XMLHttpRequest 对象
为了应对所有浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。所有现代浏览器(Chrom、IE7+、Firefox、Safari 以及 Opera)都有内建的 XMLHttpRequest 对象。XMLHttpRequest 对象用于同幕后服务器交换数据。这意味着可以更新网页的部分,而不需要重新加载整个页面。所有现代浏览器都支持 XMLHttpRequest 对象。转载 2021-03-11 15:24:51 · 405 阅读 · 0 评论 -
javascript浏览器对象模型BOM
Window 对象所有浏览器都支持 window 对象。它代表浏览器的窗口。所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员。全局变量是 window 对象的属性。全局函数是 window 对象的方法。甚至(HTML DOM 的)document 对象也是 window 对象属性:window.document.getElementById("header");等同于:document.getElementById("header");窗口尺寸两个属转载 2021-03-10 16:28:35 · 129 阅读 · 0 评论 -
HTMLCollection 与 NodeList 的区别
HTMLCollection是 HTML 元素的集合。NodeList 是文档节点的集合。NodeList 和 HTML 集合几乎完全相同。HTMLCollection 和 NodeList 对象都是类数组的对象列表(集合)。它们都有定义列表(集合)中项目数的 length 属性。它们都可以通过索引 (0, 1, 2, 3, 4, …) 像数组那样访问每个项目。访问 HTMLCollection 项目,可以通过它们的名称、id 或索引号。访问 NodeList 项目,只能通过它们的索引号。只转载 2021-03-10 15:11:18 · 880 阅读 · 0 评论 -
JavaScript函数还是Getter显示来自对象的数据
例子 1var person = { firstName: "Bill", lastName : "Gates", fullName : function() { return this.firstName + " " + this.lastName; }};// 使用方法来显示来自对象的数据:document.getElementById("demo").innerHTML = person.fullName();例子 2var person = { first转载 2021-03-10 10:51:58 · 122 阅读 · 0 评论 -
delete删除属性
delete关键词从对象中删除属性:实例:var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};delete person.age; // 或 delete person["age"];delete关键词会同时删除属性的值和属性本身。删除完成后,属性在被添加回来之前是无法使用的。delete操作符被设计用于对象属性。它对变量或函数没有影响。delete操作符不应被用于预定义的 JavaScri转载 2021-03-10 10:47:06 · 1371 阅读 · 0 评论 -
ES5 新的对象方法
ECMAScript 5 为 JavaScript 添加了许多新的对象方法:// 添加或更改对象属性Object.defineProperty(object, property, descriptor)// 添加或更改多个对象属性Object.defineProperties(object, descriptors)// 访问属性Object.getOwnPropertyDescriptor(object, property)// 将所有属性作为数组返回Object.getOwnPro原创 2021-03-10 09:34:20 · 147 阅读 · 0 评论 -
提升JavaScript 性能的方法
如何加速JavaScript 代码。减少循环中的活动编程经常会用到循环。循环每迭代一次,循环中的每条语句,包括 for 语句,都会被执行。能够放在循环之外的语句或赋值会使循环运行得更快。差的代码:var i;for (i = 0; i < arr.length; i++) {更好的代码:var i;var l = arr.length;for (i = 0; i < l; i++) {循环每次迭代时,坏代码就会访问数组的 length 属性。好代码在循环之外访问 leng转载 2021-03-09 17:26:50 · 161 阅读 · 0 评论 -
this指向
this 是什么?JavaScript this 关键词指的是它所属的对象。它拥有不同的值,具体取决于它的使用位置:在方法中,this 指的是所有者对象。单独的情况下,this 指的是全局对象。在函数中,this 指的是全局对象。在函数中,严格模式下,this 是 undefined。在事件中,this 指的是接收事件的元素。像 call() 和 apply() 这样的方法可以将 this 引用到任何对象。...原创 2021-03-09 17:06:33 · 94 阅读 · 0 评论 -
Javascript中的Error 对象
JavaScript 拥有当错误发生时提供错误信息的内置 error 对象。error 对象提供两个有用的属性:name 和 message。Error 对象属性属性描述name设置或返回错误名message设置或返回错误消息(一条字符串)Error对象的Name属性的值Valueserror 的 name 属性可返回六个不同的值:错误名描述EvalError已在 eval() 函数中发生的错误RangeError已发生超出数字范围的转载 2021-03-09 16:38:34 · 792 阅读 · 0 评论 -
JavaScript获得随机数的函数
该JavaScript 函数始终返回介于 min(包括)和 max(不包括)之间的随机数:function getRndInteger(min, max) { return Math.floor(Math.random() * (max - min) ) + min;}该JavaScript 函数始终返回介于 min 和 max(都包括)之间的随机数:function getRndInteger(min, max) { return Math.floor(Math.random()原创 2021-03-09 15:57:30 · 715 阅读 · 0 评论 -
JavaScript 数组迭代方法
数组迭代方法对每个数组项进行操作。Array.forEach()forEach() 方法为每个数组元素调用一次函数(回调函数)。实例:var txt = "";var numbers = [45, 4, 9, 16, 25];numbers.forEach(myFunction);function myFunction(value, index, array) { txt = txt + value + "<br>"; }注释:该函数接受 3 个参数:项目值项目索转载 2021-03-09 15:23:52 · 199 阅读 · 0 评论 -
JavaScript查找最高(或最低)的数组值
JavaScript 不提供查找数组中最大或最小数组值的内建函数。不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。升序排序实例:var points = [40, 100, 1, 5, 25, 10];points.sort(function(a, b){return a - b});// 现在 points[0] 包含最低值// 而 points[points.length-1] 包含最高值降序排序实例:var points = [40, 100, 1, 5, 25, 1转载 2021-03-09 15:04:43 · 872 阅读 · 0 评论 -
javascript如何识别数组
JavaScript 运算符 typeof 返回 “object”:var fruits = ["Banana", "Orange", "Apple", "Mango"];typeof fruits; // 返回 objecttypeof 运算符返回 “object”,因为 JavaScript 数组属于对象。那么我们如何识别数组呢?解决方案 1:为了解决这个问题,ECMAScript 5 定义了新方法 Array.isArray():Array.isArray(fr转载 2021-03-09 11:54:50 · 205 阅读 · 0 评论 -
String.trim()
警告:Internet Explorer 8 或更低版本不支持 trim() 方法。转载 2021-03-09 11:08:28 · 319 阅读 · 0 评论 -
JavaScript 行长度和折行
为了达到最佳的可读性,程序员们常常喜欢把代码行控制在 80 个字符以内。如果 JavaScript 语句太长,对其进行折行的最佳位置是某个运算符:实例:document.getElementById("demo").innerHTML = "Hello Kitty.";在运算符旁边( = + - * / )添加空格是个好习惯:var x = y + z;...转载 2021-03-09 09:56:42 · 1410 阅读 · 2 评论 -
ES6对象的新方法Object.is(value1, value2)
Object.is(value1, value2)——用来比较两个值是否严格相等,与(===)基本类似。基本用法:Object.is("q","q"); // trueObject.is(1,1); // trueObject.is([1],[1]); // falseObject.is({q:1},{q:1}); // false与(===)的区别//一是+0不等于-0Object.is(+0,-0); //false+0 === -0 /转载 2021-03-02 10:03:01 · 242 阅读 · 0 评论 -
对象的新方法 Object.assign(target, source_1, ···)的基本用法
Object.assign(target, source_1, ···)用于将源对象的所有可枚举属性复制到目标对象中。基本用法:let target = {a: 1};let object2 = {b: 2};let object3 = {c: 3};Object.assign(target,object2,object3); // 第一个参数是目标对象,后面的参数是源对象target; // {a: 1, b: 2, c: 3}如果目标对象和源对象有同名属性,或者多个源对象有同转载 2021-03-02 10:01:35 · 297 阅读 · 0 评论 -
javascript深拷贝和浅拷贝的简单区分
浅拷贝创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。深拷贝深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。拷贝前后两个对象互不影响。...原创 2021-03-02 09:57:40 · 97 阅读 · 0 评论