搜索
您的当前位置:首页正文

JavaScript里实用的原生API汇总_javascript技巧

2023-12-05 来源:好心意情感网

直接进入正题

解析字符串对象

我们都知道,JavaScript对象可以序列化为JSON,JSON也可以解析成对象,但是问题是如果出现了一个既不是JSON也不是对象的"东西",转成哪一方都不方便,那么eval就可以派上用场

因为 eval 可以执行字符串表达式,我们希望将 obj 这个字符串对象 执行成真正的对象,那么就需要用eval。但是为了避免eval 将带 {} 的 obj 当语句来执行,我们就在obj的外面套了对 (),让其被解析成表达式。

& (按位与)

判断一个数是否为2的n次幂,可以将其与自身减一相与

^ (按位异或)

不同第三个变量,就可以交换两个变量的值

格式化Date

想得到format后的时间?现在不用再get年月日时分秒了,三步搞定

想将format后的时间转换为时间对象?直接用Date的构造函数

想将一个标准的时间对象转换为unix时间戳?valueOf搞定之

许多朋友还提醒了这样可以快速得到时间戳

+new Date

一元加

一元加可以快速将字符串的数字转换为数学数字,即

可以将时间对象转为时间戳

转义URI

需要将url当做参数在路由中传递,现在转义之

再反转义

Number

希望保留小数点后的几位小数,不用再做字符串截取了,toFixed拿走

参数范围为0~20,不写默认0

类型检测

typeof是使用最频繁的类型检测手段

对于基本(简单)数据类型还是挺好的,但是一旦到了引用数据类型的时候,就不那么好使了

前三个还能忍,null居然也返回object,你是在逗我吗!!!(ps:其实这是JavaScript的bug 人艰不拆 ꒰・◡・๑꒱ )

这时,我们会使用instanceof

其实我们可以发现,[] 和 Object得到了true,虽然我们知道,[]也是对象,但是我们希望一个能更准确的判断类型的方法,现在它来了使用Object.prototype.toString()来判断,为了让每一个对象都能通过检测,我们需要使用Function.prototype.call或者Function.prototype.apply的形式来调用

要注意的是:toString方法极有可能被重写,所以需要使用的时候,可以直接使用Object.prototype.toString()方法

实现继承

看一个官方给的例子

通过call来获取初始化的属性和方法,通过Object.create来获取原型对象上的属性和方法

迭代

ES5出了挺多的迭代函数,如map,filter,some,every,reduce等

Array

具体的api这里介绍的很详细。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Glob...这里就提几句:join,pop,push,reverse,shift,sort,splice,unshift会改变原数组

concat,indexOf,lastIndexOf,slice,toString不会改变原数组

map,filter,some,every,reduce,forEach这些迭代方法不会改变原数组

几个注意点:

1 shift,pop会返回那个被删除的元素2 splice 会返回被删除元素组成的数组,或者为空数组3 push 会返回新数组长度4 some 在有true的时候停止5 every 在有false的时候停止6 上述的迭代方法可以在最后追加一个参数thisArg,它是执行 callback 时的 this 值。

以上所述就是本文的全部内容了,希望大家能够喜欢。

小编还为您整理了以下内容,可能对您也有帮助:

原生js(一)

记录这篇文章,在工作中一直借用一些js框架 ui框架,对js底层api有所遗忘,目的为了自己复习以下原生js操作方法,所有的js框架都是基于原生js方法和属性,尤其vue源码使用原生js开发,自底向上模式

Node 是一个接口,各种类型的 DOM API 对象会从这个接口继承。它允许我们使用相似的方式对待这些不同类型的对象;比如, 继承同一组方法,或者用同样的方式测试。

以下接口都从 Node 继承其方法和属性:

Document, Element, Attr, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference

注意

NodeList对象是一个节点集合,一般由
Node.childNodes,
document.getElementsByName和
document.querySelectorAll返回

注意

打印的oTest.childNodes

TMLCollection是一个特殊的NodeList,表示包含了若干元素(元素顺序为文档流中的顺序)的通用集合,它是实时更新的,当其所包含的元素发生改变时,它会自动更新。另外,它是一个伪数组,如果想像数组一样操作它们需要像Array.prototype.slice.call(nodeList, 2)这样调用。
获取方法
document.getElementsByClassName
document.getElementsByTagName
注意

document.getElementById:根据ID查找元素,大小写敏感,如果有多个结果,只返回第一个;

document.getElementsByClassName:根据类名查找元素,多个类名用空格分隔,返回一个HTMLCollection。注意兼容性为IE9+(含)。另外,不仅仅是document,其它元素也支持getElementsByClassName方法;

document.getElementsByTagName:根据标签查找元素,*表示查询所有标签,返回一个HTMLCollection。

document.getElementsByName:根据元素的name属性查找,返回一个NodeList。

document.querySelector:返回单个Node,IE8+(含),如果匹配到多个结果,只返回第一个。

document.querySelectorAll:返回一个NodeList,IE8+(含)。

document.forms:获取当前页面所有form,返回一个HTMLCollection;

原生js(一)

记录这篇文章,在工作中一直借用一些js框架 ui框架,对js底层api有所遗忘,目的为了自己复习以下原生js操作方法,所有的js框架都是基于原生js方法和属性,尤其vue源码使用原生js开发,自底向上模式

Node 是一个接口,各种类型的 DOM API 对象会从这个接口继承。它允许我们使用相似的方式对待这些不同类型的对象;比如, 继承同一组方法,或者用同样的方式测试。

以下接口都从 Node 继承其方法和属性:

Document, Element, Attr, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference

注意

NodeList对象是一个节点集合,一般由
Node.childNodes,
document.getElementsByName和
document.querySelectorAll返回

注意

打印的oTest.childNodes

TMLCollection是一个特殊的NodeList,表示包含了若干元素(元素顺序为文档流中的顺序)的通用集合,它是实时更新的,当其所包含的元素发生改变时,它会自动更新。另外,它是一个伪数组,如果想像数组一样操作它们需要像Array.prototype.slice.call(nodeList, 2)这样调用。
获取方法
document.getElementsByClassName
document.getElementsByTagName
注意

document.getElementById:根据ID查找元素,大小写敏感,如果有多个结果,只返回第一个;

document.getElementsByClassName:根据类名查找元素,多个类名用空格分隔,返回一个HTMLCollection。注意兼容性为IE9+(含)。另外,不仅仅是document,其它元素也支持getElementsByClassName方法;

document.getElementsByTagName:根据标签查找元素,*表示查询所有标签,返回一个HTMLCollection。

document.getElementsByName:根据元素的name属性查找,返回一个NodeList。

document.querySelector:返回单个Node,IE8+(含),如果匹配到多个结果,只返回第一个。

document.querySelectorAll:返回一个NodeList,IE8+(含)。

document.forms:获取当前页面所有form,返回一个HTMLCollection;

JavaScript 原生开发有哪些需要注意的?

JavaScript 原生开发需要注意以下几点:

1. 代码规范:遵循一定的代码规范,如使用驼峰命名法、避免使用全局变量等。

2. 性能优化:避免使用低效的算法和数据结构,减少循环次数等。

3. 安全性:注意 XSS 攻击、CSRF 攻击等安全问题,可以使用 CSP 等安全策略来防范。

4. DOM 操作:避免频繁的 DOM 操作,可以使用文档片段(DocumentFragment)等技术来减少重绘次数。

5. 事件处理:合理使用事件委托,避免过多的事件。

6. 异步编程:合理使用 Promise、async/await 等异步编程技术,避免回调地狱等问题。

js之原生节点操作

链接地址: http://blog.csdn.net/hj7jay/article/details/53389522

http://blog.csdn.net/terrychinaz/article/details/8492092

1、节点查找API节点:

Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法。常见的Node有 element,text,attribute,comment(注释节点),document 等。

{

ELEMENT_NODE: 1, // 元素节点

ATTRIBUTE_NODE: 2, // 属性节点

TEXT_NODE: 3, // 文本节点

COMMENT_NODE: 8, // 注释节点

DOCUMENT_NODE: 9, // 文档

DOCUMENT_TYPE_NODE: 10,

DOCUMENT_FRAGMENT_NODE: 11, // 文档碎片

}

通常情况下,只需要了解上面的几个就行了。

2、节点查找API

document.getElementById :根据ID查找元素,大小写敏感,如果有多个结果,只返回第一个;

document.getElementsByClassName :根据类名查找元素,多个类名用空格分隔,返回一个 HTMLCollection 。注意兼容性为IE9+(含)。另外,不仅仅是document,其它元素也支持 getElementsByClassName 方法;

document.getElementsByTagName :根据标签查找元素, * 表示查询所有标签,返回一个 HTMLCollection 。

document.getElementsByName :根据元素的name属性查找,返回一个 NodeList

document.querySelector :返回单个Node,IE8+(含),如果匹配到多个结果,只返回第一个。

document.querySelectorAll :返回一个 NodeList ,IE8+(含)。

document.forms :获取当前页面所有form,返回一个 HTMLCollection ;

这里顺便提一下:querySelector与getElement 之类的区别:

写法不同,最大的区别就是getElement 之类的只能接受的参数是id,class,name之类的,而querySelector接受的参数则扩展到了css的选择器【必须严格按照css选择器写法来写,不然抛出异常】,可以用任意的选择器来描述选择的东东。getElement***返回值是一个 Live Node List(动态),querySelector返回的是 Static Node List(静态)。

什么是NodeList呢?

<pre>NodeList 本质上是一个动态的 Node 集合,只是规范中对 querySelectorAll 有明确要求,规定其必须返回一个静态的 NodeList 对象。</pre>

看下面:

html:

<p class="lost">1</p>

<p class="lost">2</p>

js:

var query2 = document.querySelectorAll('.lost');

var query3 = document.getElementsByClassName("lost");

console.log(query2);//打印出的原型是NodeList

console.log(query3);//HTMLCollection

返回的是NodeList /HTMLCollection?

实际上,HTMLCollection 和 NodeList 十分相似,都是一个动态的元素集合,每次访问都需要重新对文档进行查询。两者的本质上差别在于,HTMLCollection 是属于 Document Object Model HTML 规范,而 NodeList 属于 Document Object Model Core 规范。

这里又有个问题:NodeList 和HTMLCollection 的区别是什么呢?

HTMLCollection是元素集合,而NodeList是节点集合(既可以包含元素,也可以包含文本节点)。所以 node.childNodes 返回 NodeList,而 node.children 和 node.getElementsByXXX 返回 HTMLCollection 。children是Element的属性,只返回的是html节点。childNodes是Node的属性,返回的是制定元素的所有的子元素集合的节点,包括html节点,文本节点,属性节点,注释节点等等。

例子:

html:

<ul>

<li>1</li>

<li>1</li>

<li>1</li>

<li>1</li>

</ul>

js:

var ul = document.getElementsByTagName('ul')[0];

var lis1 = ul.childNodes,//NodeList

lis2 = ul.children;//htmlcollection

console.log(lis1.toString(), lis1.length); // "[object NodeList]" 9

console.log(lis2.toString(), lis2.length);//[object HTMLCollection] 4

上面的nodelist节点把换行也当作了一个个的空白文本节点了,所以返回的是9,而htmlcollection却不会。querySelectorAll 的返回值是一个静态的 NodeList 对象,而 getElementsBy ***系列的返回值实际上是一个 HTMLCollection 对象 。

<pre>

如果作为NodeList返回,以下情况将会被当作文本节点处理:

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

  • 戏赠张叔甫黄庭坚的其他诗词有哪些

    《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。作者:黄庭坚。年代:宋代。我们为您从以下几个方面提供戏赠张叔甫的详细介绍。一、《戏赠张叔甫》的全文 点此查看《戏赠张叔甫》的详细内容。团扇复团扇,因风托方便。衔泥巢君屋,双燕令人羡。张公子,时相见。张公一生江海客,文章献纳麒麟殿。文采风流今尚存,看君不合长贫贱。醉中往往爱逃禅,解道澄江静如练。淮南百宗经行处,携手落日回高宴。城上乌,尾毕逋。尘沙立暝途,惟有摩尼珠。云梦泽南州,更有赤须胡。与君歌一曲,长铗归来乎。出无车,食无鱼。不须闻此意惨怆,幸是元无免破除。脱吾帽,向君笑。

  • 戏赠张叔甫黄庭坚的其他诗词

    《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。作者:黄庭坚。年代:宋代。我们为您从以下几个方面提供戏赠张叔甫的详细介绍。一、《戏赠张叔甫》的全文 点此查看《戏赠张叔甫》的详细内容。团扇复团扇,因风托方便。衔泥巢君屋,双燕令人羡。张公子,时相见。张公一生江海客,文章献纳麒麟殿。文采风流今尚存,看君不合长贫贱。醉中往往爱逃禅,解道澄江静如练。淮南百宗经行处,携手落日回高宴。城上乌,尾毕逋。尘沙立暝途,惟有摩尼珠。云梦泽南州,更有赤须胡。与君歌一曲,长铗归来乎。出无车,食无鱼。不须闻此意惨怆,幸是元无免破除。脱吾帽,向君笑。

  • 戏赠张叔甫黄庭坚其他诗词

    《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。《戏赠张叔甫》黄庭坚其他诗词:《秋怀二首》、《登快阁》、《诉衷情》、《虞美人宜州见梅作》、《寄黄几复》。作者:黄庭坚。年代:宋代。我们为您从以下几个方面提供戏赠张叔甫的详细介绍。一、《戏赠张叔甫》的全文 点此查看《戏赠张叔甫》的详细内容。团扇复团扇,因风托方便。衔泥巢君屋,双燕令人羡。张公子,时相见。张公一生江海客,文章献纳麒麟殿。文采风流今尚存,看君不合长贫贱。醉中往往爱逃禅,解道澄江静如练。淮南百宗经行处,携手落日回高宴。城上乌,尾毕逋。尘沙立暝途,惟有摩尼珠。云梦泽南州,更有赤须胡。与君歌一曲,长铗归来乎。出无车,食无鱼。不须闻此意惨怆,幸是元无免破除。脱吾帽,向君笑。

  • 紴字的组词 紴字的组词有哪些

    紴字的组词 紴字的组词有哪些。麻紴、;紴的笔顺是撇折、撇折、点、点、点、点、横撇。紴字的笔顺图解;共十一画;紴;1;撇折;2;撇折;3;点;4;点;5;点;6;点;7;横撇;8;撇;9;竖;10;横撇;11;捺;紴的拼音为bō,部首为糹,结构为左右,注音为ㄅㄛ,ㄅㄧˋ。紴字的具体字的具体解释是什么呢,我们通过以下几个方面为您介绍。一、基本解释 点此查看紴的详细内容。[ bō ]1.绦属。2.锦类。3.水波锦文。[ bì ]1.装束貌。二、康熙字典;紴【未集中】【糸部】 康熙筆画:11画,部外筆画:5画《廣韻》博禾切《集韻》逋禾切。音波。《說文》絛屬。又《集韻》匹靡切,音帔。《玉篇》水紴錦文也。又《集韻》平義切,音被。《類篇》裝束貌。三、说文解字;

  • 戏赠张叔甫相同朝代诗歌 戏赠张叔甫相同朝代诗歌有哪些

    《戏赠张叔甫》黄庭坚相同朝代诗词。《曹将军》、《下瞿塘》、《滕王阁》、《儿馁嗔郎罢妻寒怨藁砧唐眉山诗也戏为笺之》、《题艾溪》、《废贡院为米廪过之值盘厫》、《送客至灵谷》、《叹屩词》、《题陈朝玉爱竹轩》、《酬春湖史履庸惠四皓图》。《戏赠张叔甫》相同朝代的诗词:《曹将军》、《下瞿塘》、《滕王阁》、《儿馁嗔郎罢妻寒怨藁砧唐眉山诗也戏为笺之》、《题艾溪》、《废贡院为米廪过之值盘厫》、《送客至灵谷》、《叹屩词》、《题陈朝玉爱竹轩》、《酬春湖史履庸惠四皓图》作者:黄庭坚。年代:宋代。我们为您从以下几个方面提供戏赠张叔甫的详细介绍。一、《戏赠张叔甫》的全文 点此查看《戏赠张叔甫》的详细内容。团扇复团扇,因风托方便。衔泥巢君屋,双燕令人羡。张公子,时相见。张公一生江海客,文章献纳麒麟殿。

Top