在前端开发的时候,我们往往会使用javascript 框架,使用框架的好处多多,提供的方便的操作函数,类继承机制,MV*等,让我们能够快速开发,然而我们应该清楚这些框架都是基于浏览器原生api的封装,在使用框架的时候,我们应该明白框架使用了哪些原生的api。

下面以Jquery为例与 IE 浏览器  Javascript 原生 API 对比一下:

选择元素

// jQuery
var els = $('.el'); // Native
var els = document.querySelectorAll('.el'); // Shorthand
var $ = function (el) {
return document.querySelectorAll(el);
} var els = $('.el');

创建元素

// jQuery
var newEl = $('<div/>'); // Native
var newEl = document.createElement('div');

事件侦听

// jQuery
$('.el').on('event', function() { }); // Native
[].forEach.call(document.querySelectorAll('.el'), function (el) {
el.addEventListener('event', function() { }, false);
});

获取/设置元素属性

// jQuery
$('.el').filter(':first').attr('key', 'value');
$('.el').filter(':first').attr('key'); // Native
document.querySelector('.el').setAttribute('key', 'value');
document.querySelector('.el').getAttribute('key');
移除/添加/切换 样式
// jQuery
$('.el').addClass('class');
$('.el').removeClass('class');
$('.el').toggleClass('class'); // Native
document.querySelector('.el').classList.add('class');
document.querySelector('.el').classList.remove('class');
document.querySelector('.el').classList.toggle('class');

往元素里面添加子元素

// jQuery
$('.el').append($('<div/>')); // Native
document.querySelector('.el').appendChild(document.createElement('div'));

元素复制

// jQuery
var clonedEl = $('.el').clone(); // Native
var clonedEl = document.querySelector('.el').cloneNode(true);

元素的移除

// jQuery
$('.el').remove(); // Native
remove('.el'); function remove(el) {
var toRemove = document.querySelector(el); toRemove.parentNode.removeChild(toRemove);
}

获取父元素

// jQuery
$('.el').parent(); // Native
document.querySelector('.el').parentNode;

获取上一个/下一个元素

// jQuery
$('.el').prev();
$('.el').next(); // Native
document.querySelector('.el').previousElementSibling;
document.querySelector('.el').nextElementSibling;

XHR 以及Ajax

// jQuery
$.get('url', function (data) { });
$.post('url', {data: data}, function (data) { }); // Native // get
var xhr = new XMLHttpRequest(); xhr.open('GET', url);
xhr.onreadystatechange = function (data) { }
xhr.send(); // post
var xhr = new XMLHttpRequest() xhr.open('POST', url);
xhr.onreadystatechange = function (data) { }
xhr.send({data: data})
												

那些原生的javascript APIs的更多相关文章

  1. 什么是原生的javascript

    在www.cocos.com的cocos2d-js的介绍中写道“Cocos2d-JS 是跨全平台的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windo ...

  2. Ext JS学习第九天 Ext基础之 扩展原生的javascript对象

    此文来记录学习笔记: •Ext对于原生的javascript对象进行了一系列的扩展,我们把他们掌握好,更能深刻的体会Ext的架构,从而对我们的web开发更好的服务, 源码位置,我们可以从开发包的这个位 ...

  3. Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)

    此文来记录学习笔记: 今天继续说Ext.Array,Ext.Function,Ext.Date,Ext.Error ------------------------------------------ ...

  4. 异步处理XML异步数据——以原生的JavaScript与jQuery中的$.ajax()为例

    此文档解决以下问题: 一.原生的JavaScript从服务器端输出XML格式数据 1.XMLHttpRequest对象的运用 XMLHttpRequest对象的open()方法 XMLHttpRequ ...

  5. 鸿蒙真的是套壳吗?HarmonyOS应用开发初体验,Java原生和JavaScript的mvvm开发

    初探寻鸿蒙os的应用开发 本期视频已发布到bilibili 注意是应用开发,没错码农(应用开发)一般关注这个就行了 IDE 点击应用开发以后,点击链接下载IDE,DevEco Studio是基于IDE ...

  6. JAMstack (JavaScript + APIs + Markup)

    JAMstack (JavaScript + APIs + Markup) The modern way to build Websites and Apps that delivers better ...

  7. WebAssembly JavaScript APIs

    WebAssembly JavaScript APIs https://developer.mozilla.org/en-US/docs/WebAssembly/Using_the_JavaScrip ...

  8. 关于原生的Javascript

    JQuery是个好工具,它做了太多的事. 以至于让人渐渐忘记原生的JS该怎么写了,导致连为了用个DOM选择器或者Ajax就直接加个JQuery,确实,JQuery太方便了. 坏处: 由于JQuery的 ...

  9. 抛弃jQuery 深入原生的JavaScript

    虽然我已经做网站建设工作10多年了,但我从最近3年才开始更多地学习如何更好的将纯JavaScript用于工作中,而不总是将jQuery考虑在第一位.现在我每天学习很多东西.这个过程让我觉得Adtile ...

随机推荐

  1. 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用

    先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一 ...

  2. 【Oracle】Oracle改变日志归档模式

    一.确认工作模式:   1.查询V$DATABASE      SQL>select log_mode from v$database;      归档日志:ARCHIVELOG     2.执 ...

  3. django网页的分页功能,大家如果有疑问请留言

    url文件 from django.contrib import admin from django.conf.urls import url from app01 import views urlp ...

  4. Git(三):Git 使用规范流程

    转:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人 ...

  5. java访问共享文件夹

    由于工作需要读取局域网中一台机器的共享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以下是实现了远程读取文件的功能: package junit; import jcifs ...

  6. ubuntu系统中出现mysql数据库无法启动报错2002该怎么处理,具体报错信息如正文所示

    python@ubuntu:~$ mysql -uroot -pmysqlmysql: [Warning] Using a password on the command line interface ...

  7. Mysql事务及行级锁

    事务隔离级别 数据库事务隔离级别,只是针对一个事务能不能读取其它事务的中间结果. Read Uncommitted (读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离 ...

  8. re模块之research

    2. re.research re.research扫描整个字符串并返回第一个成功的匹配. 2.1函数语法: re.search(pattern, string, flags=0) 参数 描述 pat ...

  9. OpenGL位图函数

    [OpenGL位图函数] 1.OpenGL中glBitmap用于绘制一个二值阵列. When drawn, the bitmap is positioned relative to the curre ...

  10. 在SharePoint解决方案中使用JavaScript (0)

    随着Web前段技术(JavaScript/HTML5)的日益发扬光大,在Web应用程序中,我们开始更多的使用JavaScript.很多以往是放在服务器上运行的逻辑,现在都开始逐渐的向前段转移.这种趋势 ...