首页 文章 精选 留言 我的

精选列表

搜索[javascript库],共10000篇文章
优秀的个人博客,低调大师

JavaScript DOM学习笔记--创建追加元素

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>动态添加城市</title> <script> window.onload = function(){ document.getElementById("btn").onclick = function(){ //1.获取ul元素节点 var ulEle = document.getElementById("ul1"); //2.创建城市文本节点 var textNode = document.createTextNode("深圳");//深圳 //3.创建li元素节点 var liEle = document.createElement("li");//<li></li> //4.将城市文本节点添加到li元素节点中去 liEle.appendChild(textNode);//<li>深圳</li> //5.将li添加到ul中去 ulEle.appendChild(liEle); } } </script> </head> <body> <input type="button" value="添加新城市" id="btn"/> <ul id="ul1"> <li>北京</li> <li>上海</li> <li>广州</li> </ul> </body> </html>

优秀的个人博客,低调大师

javascript中对数组对象的深度拷贝

在前端开发的某些逻辑中,经常需要对现有的js对象创建副本,避免污染原始数据的情况。 如果是简单的一维数组对象,可以使用两个原生方法: 1、splice var arr1 = ['a', 'b', 'c']; var arr2 = arr1.splice(0); console.info(arr1); arr2[1] = 'x'; console.info(arr1); 2、concat var arr1 = ['a', 'b', 'c']; var arr2 = [].concat(arr1); console.info(arr1); arr2[1] = 'x'; console.info(arr1); 那如果是多层级的数组对象,再用上面的两个方法就有问题了 虽然最上层会创建副本,但每层下面的数据还是会引用原来的对象 对于这种情况,可以利用jquery的extend方法进行深度拷贝: 3、$.extend var arr1 = [ { 'id': 1, 'name': 'a' }, { 'id': 2, 'name': 'b' }, { 'id': 3, 'name': 'c' } ] var arr2 = $.extend(true, {}, arr1); console.info(arr1); arr2[1].name = 'x'; console.info(arr1); 另外,$.extend也能对任何js对象创建深度拷贝,需要注意的是第一个参数要传入true,否则只是拷贝第一层属性 其实在实际开发中,$.extend还可以做的更多 宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒

优秀的个人博客,低调大师

第179天:javascript中replace使用总结

ECMAScript提供了replace()方法。这个方法接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数。现在我们来详细讲解可能出现的几种情况。 1. 两个参数都为字符串的情况 1 var text = 'cat, bat, sat, fat'; 2 // 在字符串中找到at,并将at替换为ond,只替换一次 3 var result = text.replace('at', 'ond'); 4 // "cond, bat, sat, fat" 5 console.log(result); 2. 第一个参数为RegExp对象,第二个参数为字符串 我们可以发现上面这种情况只替换了第一个at,如果想要替换全部at,就必须使用RegExp对象。 1 var text = 'cat, bat, sat, fat'; 2 // 使用/at/g 在全局中匹配at,并用ond进行替换 3 var result = text.replace(/at/g, 'ond'); 4 // cond, bond, sond, fond 5 console.log(result); 3. 考虑RegExp对象中捕获组的情况。 RegExp具有9个用于存储捕获组的属性。$1, $2...$9,分别用于存储第一到九个匹配的捕获组。我们可以访问这些属性,来获取存储的值。 1 var text = 'cat, bat, sat, fat'; 2 // 使用/(.at)/g 括号为捕获组,此时只有一个,因此所匹配的值存放在$1中 3 var result = text.replace(/(.at)/g, '$($1)'); 4 // $(cat), $(bat), $(sat), $(fat) 5 console.log(result); 4. 第二个参数为函数的情况,RegExp对象中不存在捕获组的情况。 1 var text = 'cat, bat, sat, fat'; 2 // 使用/at/g 匹配字符串中所有的at,并将其替换为ond, 3 // 函数的参数分别为:当前匹配的字符,当前匹配字符的位置,原始字符串 4 var result = text.replace(/at/g, function(match, pos, originalText) { 5 console.log(match + ' ' + pos); 6 return 'ond' 7 }); 8 console.log(result); 9 // 输出 10 /* 11 at 1 dd.html:12:9 12 at 6 dd.html:12:9 13 at 11 dd.html:12:9 14 at 16 dd.html:12:9 15 cond, bond, sond, fond dd.html:16:5 16 */ 5. 第二个参数为函数的情况,RegExp对象中存在捕获组的情况。 1 var text = 'cat, bat, sat, fat'; 2 // 使用/(.at)/g 匹配字符串中所有的at,并将其替换为ond, 3 // 当正则表达式中存在捕获组时,函数的参数一次为:模式匹配项,第一个捕获组的匹配项, 4 // 第二个捕获组的匹配项...匹配项在字符串中的位置,原始字符串 5 var result = text.replace(/.(at)/g, function() { 6 console.log(arguments[0] + ' ' + arguments[1] + ' ' + arguments[2]); 7 return 'ond' 8 }); 9 console.log(result); 10 // 输出 11 /* 12 cat at 1 13 bat at 6 14 sat at 11 15 fat at 16 16 cond, bond, sond, fond 17 */ 以上为replace方法的所有可以使用的情况,下面我们使用replace和正则表达式共同实现字符串trim方法。 1 (function(myFrame) { 2 myFrame.trim = function(str) { 3 // ' hello world ' 4 return str.replace(/(^\s*)|(\s*$)/g, ''); 5 }; 6 window.myFrame = myFrame; 7 })(window.myFrame || {}); 8 // 测试 9 var str = ' hello world ' 10 console.log(str.length); // 15 11 console.log(myFrame.trim(str).length); // 11

优秀的个人博客,低调大师

第149天:javascript中this的指向详解

js中的this指向十分重要,了解js中this指向是每一个学习js的人必学的知识点,今天没事,正好总结了js中this的常见用法,喜欢的可以看看: 1、全局作用域或者普通函数中this指向全局对象window。 1 //直接打印 2 console.log(this) //window 3 4 //function声明函数 5 function bar () {console.log(this)} 6 bar() //window 7 8 //function声明函数赋给变量 9 var bar = function () {console.log(this)} 10 bar() //window 11 12 //自执行函数 13 (function () {console.log(this)})(); //window 2、方法调用中谁调用this指向谁 1 {console.log(this)} 2 } 3 person.run() // person 4 5 //事件绑定 6 var btn = document.querySelector("button") 7 btn.onclick = function () { 8 console.log(this) // btn 9 } 10 //事件监听 11 var btn = document.querySelector("button") 12 btn.addEventListener('click', function () { 13 console.log(this) //btn 14 }) 15 16 //jquery的ajax 17 $.ajax({ 18 self: this, 19 type:"get", 20 url: url, 21 async:true, 22 success: function (res) { 23 console.log(this) // this指向传入$.ajxa()中的对象 24 console.log(self) // window 25 } 26 }); 27 //这里说明以下,将代码简写为$.ajax(obj) ,this指向obj,在obj中this指向window,因为在在success方法中,独享obj调用自己,所以this指向obj 3、在构造函数或者构造函数原型对象中this指向构造函数的实例 1 //不使用new指向window 2 function Person (name) { 3 console.log(this) // window 4 this.name = name; 5 } 6 Person('inwe') 7 //使用new 8 function Person (name) { 9 this.name = name 10 console.log(this) //people 11 self = this 12 } 13 var people = new Person('iwen') 14 console.log(self === people) //true 15 //这里new改变了this指向,将this由window指向Person的实例对象people

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册