【402com永利1站】前端面试那些坑之JavaScript(二)

原标题:GitHub已完全弃用jQuery,问题是为什么?

JavaScript面试题第二弹

21、如何判断一个对象是否属于某个类?

使用instanceof

if(a instanceof Person){

alert('yes');

}

22、new操作符具体干了什么呢?

(1)创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。

(2)属性和方法被加入到this引用的对象中。

(3)新创建的对象由this所引用,并且最后隐式的返回this。

var obj = {};

obj.__proto__ = Base.prototype;

Base.call(obj);

23、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

hasOwnProperty

javaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。

使用方法:

object.hasOwnProperty(proName)

其中参数object是必选项。一个对象的实例。

proName是必选项。一个属性名称的字符串值。

如果object具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回true,反之则返回false。

24、JSON的了解?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。

它是基于JavaScript的一个子集。数据格式简单,易于读写,占用带宽小

如:{"age":"12", "name":"back"}

JSON字符串转换为JSON对象:

var obj =eval('('+ str +')');

var obj = str.parseJSON();

var obj = JSON.parse(str);

JSON对象转换为JSON字符串:

var last=obj.toJSONString();

var last=JSON.stringify(obj);

[].forEach.call($$("*"),function(a){a.style.outline="1pxsolid
#"+(~~(Math.random()*(1<<24))).toString(16)})能解释一下这段代码的意思吗?

25、js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(用得最多)、按需异步载入js

26、Ajax是什么?如何创建一个Ajax?

ajax的全称:AsynchronousJavascript And XML。

异步传输+js+xml。

所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象

(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

(3)设置响应HTTP请求状态变化的函数

(4)发送HTTP请求

(5)获取异步调用返回的数据

(6)使用JavaScript和DOM实现局部刷新

27、Ajax解决浏览器缓存问题?

(1)在ajax发送请求前加上anyAjaxObj.setRequestHeader("If-Modified-Since","0")。

(2)在ajax发送请求前加上anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。

(3)在URL后面加上一个随机数:"fresh=" + Math.random();。

(4)在URL后面加上时间搓:"nowtime=" + new Date().getTime();。

(5)如果是使用jQuery,直接这样就可以了$.ajaxSetup({cache:false})。这样页面的所有ajax都会执行这条语句就是不需要保存缓存记录。

28、同步和异步的区别?

同步的概念应该是来自于OS中关于同步的概念:不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式).同步强调的是顺序性.谁先谁后.异步则不存在这种顺序性.

同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。

异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

29、如何解决跨域问题?

jsonp、iframe、window.name、window.postMessage、服务器上设置代理页面

30、模块化开发怎么做?

立即执行函数,不暴露私有成员

var module1 = (function(){

var_count = 0;

var m1 =function(){

//...

};

var m2 =function(){

//...

};

return {

m1 :m1,

m2 : m2

};

})();

31、AMD(Modules/Asynchronous-Definition)、CMD(CommonModule
Definition)规范区别?

Asynchronous Module
Definition,异步模块定义,所有的模块将被异步加载,模块加载不影响后面语句运行。所有依赖某些模块的语句均放置在回调函数中。

区别:

(1)对于依赖的模块,AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD推崇as
lazy as possible.

(2)CMD推崇依赖就近,AMD推崇依赖前置。看代码:

// CMD

define(function(require, exports, module) {

var a = require('./a')

a.doSomething()

//此处略去100行

var b = require('./b') //依赖可以就近书写

b.doSomething()

// ...

})

// AMD默认推荐

define(['./a', './b'], function(a, b) { //依赖必须一开始就写好

a.doSomething()

//此处略去100行

b.doSomething()

// ...

})

32、异步加载JS的方式有哪些?

(1)defer,只支持IE

(2)async:

(3)创建script,插入到DOM中,加载完毕后callBack

33、documen.write和innerHTML的区别

document.write只能重绘整个页面

innerHTML可以重绘页面的一部分

34、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?

(1)创建新节点

createDocumentFragment()    //创建一个DOM片段

createElement()   //创建一个具体的元素

createTextNode()   //创建一个文本节点

(2)添加、移除、替换、插入

appendChild()

removeChild()

replaceChild()

insertBefore() //在已有的子节点前插入一个新的子节点

(3)查找

getElementsByTagName()    //通过标签名称

getElementsByName()   
//通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)

getElementById()    //通过元素Id,唯一性

35、.call()和.apply()的区别?

例子中用add来替换sub,add.call(sub,3,1)==
add(3,1),所以运行结果为:alert(4);

注意:js中的函数其实是对象,函数名是对Function对象的引用。

function add(a,b)

{

alert(a+b);

}

function sub(a,b)

{

alert(a-b);

}

add.call(sub,3,1);

36、jquery.extend与jquery.fn.extend的区别?

* jquery.extend为jquery类添加类方法,可以理解为添加静态方法

* jquery.fn.extend:

源码中jquery.fn=
jquery.prototype,所以对jquery.fn的扩展,就是为jquery类添加成员函数

使用:

jquery.extend扩展,需要通过jquery类来调用,而jquery.fn.extend扩展,所有jquery实例都可以直接调用。

37、Jquery与jQuery UI有啥区别?

*jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。

*jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。

提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等

38、jquery中如何将数组转化为json字符串,然后再转化回来?

jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩展:

$.fn.stringifyArray = function(array) {

return JSON.stringify(array)

}

$.fn.parseArray = function(array) {

return JSON.parse(array)

}

然后调用:

$("").stringifyArray(array)

39、针对jQuery的优化方法?

*基于Class的选择性的性能相对于Id选择器开销很大,因为需遍历所有DOM元素。

*频繁操作的DOM,先缓存起来再操作。用Jquery的链式调用更好。

比如:varstr=$("a").attr("href");

*for (var i = size; i < arr.length; i++){}

for循环每一次循环都查找了数组(arr)的.length属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑得更快:

for(var i = size, length = arr.length; i < length; i++) {}

40、如何判断当前脚本运行在浏览器还是node环境中?(阿里)

this === window ? 'browser' : 'node';

通过判断Global对象是否为window,如果不为window,当前脚本没有运行在浏览器中

41、jQuery的slideUp动画,如果目标元素是被外部事件驱动,当鼠标快速地连续触发外部元素事件,动画会滞后的反复执行,该如何处理呢?

jquery stop():如:$("#div").stop().animate({width:"100px"},100);

42、那些操作会造成内存泄漏?

内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。

垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。

setTimeout的第一个参数使用字符串而非函数的话,会引发内存泄漏。

闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

43、JQuery一个对象可以同时绑定多个事件,这是如何实现的?

*多个事件同一个函数:

$("div").on("click mouseover", function(){});

*多个事件不同函数

$("div").on({

click: function(){},

mouseover: function(){}

});

44、知道什么是webkit么?知道怎么用浏览器的各种工具来调试和debug代码么?

Chrome,Safari浏览器内核。

45、用js实现千位分隔符?

function commafy(num) {

return num && num

.toString()

.replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {

return $1 + ",";

});

}

console.log(commafy(1234567.90));//1,234,567.90

46、检测浏览器版本版本有哪些方式?

功能检测、userAgent特征检测

比如:navigator.userAgent

//"Mozilla/5.0 (Macintosh; Intel MacOS X 10_10_2) AppleWebKit/537.36

(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"

47、What is a Polyfill?

polyfill是“在旧版浏览器上复制标准API的JavaScript补充”,可以动态地加载JavaScript代码或库,在不支持这些标准API的浏览器中模拟它们。

例如,geolocation(地理位置)polyfill可以在navigator对象上添加全局的geolocation对象,还能添加getCurrentPosition函数以及“坐标”回调对象,

所有这些都是W3C地理位置API定义的对象和函数。因为polyfill模拟标准API,所以能够以一种面向所有浏览器未来的方式针对这些API进行开发,

一旦对这些API的支持变成绝对大多数,则可以方便地去掉polyfill,无需做任何额外工作。

48、做的项目中,有没有用过或自己实现一些polyfill方案(兼容性处理方案)?

比如:html5shiv、Geolocation、Placeholder

49、使用JS实现获取文件扩展名?

function getFileExtension(filename) {

return filename.slice((filename.lastIndexOf(".") - 1>>> 0) +
2);

}

String.lastIndexOf()方法返回指定值(本例中的'.')在调用该方法的字符串中最后出现的位置,如果没找到则返回-1。

对于'filename'和'.hiddenfile',lastIndexOf的返回值分别为0和-1无符号右移操作符(»>)将-1转换为4294967295,将-2转换为4294967294,这个方法可以保证边缘情况时文件名不变。

String.prototype.slice()从上面计算的索引处提取文件的扩展名。如果索引比文件名的长度大,结果为""。

京程一灯,梦起的地方,我们始终相信通过努力,可以改变自己的命运。

我们始终相信,通过坚持不懈,可以为大家解决更多的前端技术问题。

我们始终相信,时间可以证明,我们可以为广大IT从业者解决前端学习路线。

HTML5,CSS3,Web前端,jquery,javascript,前端学习路线,各类问题,我们都可以为你解决。

更多技术好文,前端问题,面试技巧,请关注京程一灯(原一灯学堂)

JavaScript、jQuery与Ajax的关系,jqueryajax

在上篇文章给大家介绍了javascript jquery
ajax的小结,今天接着给大家介绍javascript
jquery与ajax的关系,感兴趣的朋友一起学习吧

简单总结:

1、JS是一门前端语言。

2、Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新。

3、jQuery是一个框架,它对JS进行了封装,使其更方便使用。jQuery使得JS与Ajax的使用更方便

详细情况:

Actually only one of them is a programming language.
Javascript is a programming language which is used mainly in webpages
for making websites interactive. When a webpage is parsed by the
browser, it creates an in-memory representation of the page. It is a
tree structure, which contains all elements on the page. So there is a
root element, which contains the head and the body elements, which
contain other elements, which contain other elements. So it looks like a
tree basically. Now with javascript you can manipulate elements in the
page using this tree. You can pick elements by their id
(getElementsById), or their tag name (getElementsByTagName), or by
simply going through the tree (parentNode, firstChild, lastChild,
nextSibling, previousSibling, etc.). Once you have element(s) to work
with you can modify them by changing their look, content or position on
the page. This interface is also known as the DOM(Document Object
Model). So you can do everything with Javascript that another
programming language can do, and by using it embedded into wepages you
also get an in-memory Object of the current webpage by which you can
make changes to the page interactively.
AJAX is a technique of communication between the browser and the server
within a page. Chat is a good example. You write a message, send a
message and recive other messages without leaving the page. You can
manage this interaction with Javascript on the client side, using an
XMLHTTP Object provided by the browser.
jQuery is a library which aims to simplify client side web development
in general (the two other above). It creates a layer of abstracion so
you can reuse common languages like CSS and HTML in Javascript. It also
includes functions which can be used to communicate with servers very
easily (AJAX). It is written in Javascript, and will not do everything
for you, only makes common tasks easier. It also hides some of the
misconceptions and bugs of browsers.
To sum up:
Javascript is a programming language (objects, array, numbers, strings,
calculations)
AJAX and jQuery uses Javascript
jQuery is for simplifing common tasks with AJAX and page manipulation
(style, animation, etc.)
Finally, an example just to see some syntax:
// page manipulation in javascript
var el = document.getElementById("box");
el.style.backgroundColor = "#000";
var new_el = document.createElement("div");
el.innerHTML = "<p>some content</p>";
el.appendChild(new_el);

// and how you would do it in jQuery
$("#box")
.css({ "background-color": "#000" })
.append("<div><p>some content</p></div>");

1.javascript是一种在客户端执行的脚本语言。ajax是基于javascript的一种技术,它主要用途是提供异步刷新(只刷新页面的一部分,而不是整个页面都刷新)。一个是语言,一个是技术,两者有本质区别.

2.javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术
,它是利用了一系列相关的技术其中就包括javascript。

JavaScript可以做什么?

用JavaScript可以做很多事情,使网页更具交互性,给站点的用户提供更好,更令人兴奋的体验。JavaScript使你可以创建活跃的用户界面,当用户在页面间导航时向他们反馈。

使用JavaScript来确保用户以表单形式输入有效的信息,这可以节省你的业务时间和开支。

使用JavaScript,根据用户的操作可以创建定制的HTML页面。

JavaScript还可以处理表单,设置cookie,即时构建HTML页面以及创建基于Web的应用程序。

JavaScript不能做什么?

JavaScript是一种客户端语言。(实际上,也存有服务器端实现的JavaScript版本)。也就是说,设计它的目的是在用户的机器上执行任务,而不是在服务器上。因此,JavaScript有一些固有的限制,这些限制主要出于如下安全原因:
1.JavaScript不允许读写客户机器上的文件。这是有好处的,因为你肯定不希望网页能够读取自己硬盘上的文件,或者能够将病毒写入硬盘,或者能够操作你的计算机上的文件。唯一例外是,JavaScript可以写到浏览器的cookie文件,但是也有一些限制。
2.JavaScript不允许写服务器机器上的文件。尽管写服务器上的文件在许多方面是很方便的(比如存储页面点击数或用户填写表单的数据),但是JavaScript不允许这么做。相反,需要用服务器上的一个程序处理和存储这些数据。这个程序可以是Perl或者PHP等语言编写的CGI运行在服务器上的程序或者Java程序

3.JavaScript不能关闭不是它自己打开的窗口。这是为了避免一个站点关闭其他任何站点的窗口,从而独占浏览器。

4.JavaScript不能从来自另一个服务器的已经打开的网页中读取信息。换句话说,网页不能读取已经打开的其它窗口中的信息,因此无法探查访问这个站点冲浪者还在访问其它哪些站点。

Ajax是什么?

Ajax是一种创建交互式web应用程序的方式。Ajax是ASynchronouS JavaScript and
XML(异步JavaScript和xml)的缩写,这个词是由web开发人员JeSSe JameS
Garrett在2005年年初首创的。严格地说,Ajax只是JavaScript的一小部分(尽管这一部分特别流行)。但是,随着频繁的使用,这个词不再指某种技术本身(比如Java或JavaScript)。

在大多数情况下,Ajax一般是指以下这些技术的组合:

XMTML;

CSS(CaScading Style Sheet,层叠样式表);

使用JavaScript访问的DOM(Document Object Model,文档对象模型);

XML,这是在服务器和客户端之间传输的数据格式;

XMLHttpRequeSt,用来从服务器获取数据。

Ajax的好处是:

应用程序的大多数处理在用户的浏览器中发生,而且对服务器的数据请求往往很短。所以可以使用Ajax建立功能丰富的应用程序,这些应用程序依赖基于web的数据,但是其性能远远超过老式的,因为老式方法要求服务器传回整个HTML页面来响应用户操作。

一些公司已经在Ajax方面投入大量资金,尤其是Google。Google已经建立了几个著名的Ajax应用程序,包括Gmail(基于web的电子邮件),Google
calendar,Google docS和Google
mapS。另外一个大型的Ajax支持者Yahoo!,它使用Ajax增强个性化的MY
Yahoo门户,Yahoo首页,Yahoo
Mail,等等。这两家公司都向公众开放了其web应用程序的接口,人们可以使用这些程序会获得地图并且在地图上加上有意思,有用或者好玩的信息,比如洛杉矶地区所有日本餐馆的位置或者电影射鹏的位置。

1、JavaScript

定义:

javaScript的简写形式就是JS,是由Netscape公司开发的一种脚本语言,一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能(其编写的程序可以被嵌入到HTML或XML页面中,并直接在浏览器中解释执行)。

组成部分:

402com永利1站 1     

核心(ECMAScript)、文档对象模型(Document Object
Model,简称DOM)、浏览器对象模型(Browser Object Model,简称BOM)

描述:

Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。

Javascript是由 Netscape公司开发的一种脚本语言(scripting
language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。

Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。

Javascript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。

主流的javaScript框架有:YUI ,Dojo,Prototype,jQuery...

2、Ajax

定义:

AJAX即“Asynchronous JavaScript and
XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James
Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。

AJAX不是一个技术,它实际上是几种技术,每种技术都有其独特之处,合在一起就成了一个功能强大的新技术。

组成:

基于XHTML和CSS标准的表示;

使用Document Object Model进行动态显示和交互;

使用XML和XSLT做数据交互和操作;

使用XML HttpRequest与服务器进行异步通信;

使用JavaScript绑定一切。

描述:

Ajax是结合了Java技术、XML以及JavaScript等编程技术,可以让开发人员构建基于Java技术的Web应用,并打破了使用页面重载的管理。

Ajax技术使用非同步的HTTP请求,在Browser和Web
Server之间传递数据,使Browser只更新部分网页内容而不重新载入整个网页.

Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。

3、jQuery

定义:

jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML
documents、events、实现动画效果,并且方便地为网站提供AJAX交互。

特点:

轻量级、链式语法、CSS1-3选择器、跨浏览器、简单、易扩展;

jQuery是一种独立于服务器端代码的框架,独立于ASP.NET或者JAVA;

jQuery是当前很流行的一个JavaScript框架,使用类似于CSS的选择器,可以方便的操作HTML元素,拥有很好的可扩展性,拥有不少插件。

描述:

对于程序员来说,简化javascript和ajax编程,能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度。

对于用户来说,改善了页面的视觉效果,增强了与页面的交互性,体验更绚丽的网页物资。

javaScript框架实际上是一系列工具和函数。

二、三者的关系

下面我用一张导图来阐述这三者的关系:

402com永利1站 2

解释:

javaScript是用于Web客户端开发的脚本语言,Ajax是基于JS语言,主要组合JS、CSS、XML三种技术的新技术,是用于创建交互式网页应用的网页开发技术。jQuery是JS的框架,基于JS语言,集合Ajax技术开发出来的JS库,封装JS和Ajax的功能,提供函数接口,大大简化了Ajax,JS的操作。

简单总结:

1、JS是一门前端语言。

2、Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新。

3、jQuery是一个框架,它对JS进行了封装,使其更方便使用。jQuery使得JS与Ajax的使用更方便

详细情况:

Actually only one of them is a programming language.
Javascript is a programming language which is used mainly in webpages
for making websites interactive. When a webpage is parsed by the
browser, it creates an in-memory representation of the page. It is a
tree structure, which contains all elements on the page. So there is a
root element, which contains the head and the body elements, which
contain other elements, which contain other elements. So it looks like a
tree basically. Now with javascript you can manipulate elements in the
page using this tree. You can pick elements by their id
(getElementsById), or their tag name (getElementsByTagName), or by
simply going through the tree (parentNode, firstChild, lastChild,
nextSibling, previousSibling, etc.). Once you have element(s) to work
with you can modify them by changing their look, content or position on
the page. This interface is also known as the DOM(Document Object
Model). So you can do everything with Javascript that another
programming language can do, and by using it embedded into wepages you
also get an in-memory Object of the current webpage by which you can
make changes to the page interactively.
AJAX is a technique of communication between the browser and the server
within a page. Chat is a good example. You write a message, send a
message and recive other messages without leaving the page. You can
manage this interaction with Javascript on the client side, using an
XMLHTTP Object provided by the browser.
jQuery is a library which aims to simplify client side web development
in general (the two other above). It creates a layer of abstracion so
you can reuse common languages like CSS and HTML in Javascript. It also
includes functions which can be used to communicate with servers very
easily (AJAX). It is written in Javascript, and will not do everything
for you, only makes common tasks easier. It also hides some of the
misconceptions and bugs of browsers.
To sum up:
Javascript is a programming language (objects, array, numbers, strings,
calculations)
AJAX and jQuery uses Javascript
jQuery is for simplifing common tasks with AJAX and page manipulation
(style, animation, etc.)
Finally, an example just to see some syntax:
// page manipulation in javascript
var el = document.getElementById("box");
el.style.backgroundColor = "#000";
var new_el = document.createElement("div");
el.innerHTML = "<p>some content</p>";
el.appendChild(new_el);
// and how you would do it in jQuery
$("#box")
.css({ "background-color": "#000" })
.append("<div><p>some content</p></div>");

1.javascript是一种在客户端执行的脚本语言。ajax是基于javascript的一种技术,它主要用途是提供异步刷新(只刷新页面的一部分,而不是整个页面都刷新)。一个是语言,一个是技术,两者有本质区别.

2.javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术
,它是利用了一系列相关的技术其中就包括javascript。

  1. JavaScript可以做什么?

用JavaScript可以做很多事情,使网页更具交互性,给站点的用户提供更好,更令人兴奋的体验。JavaScript使你可以创建活跃的用户界面,当用户在页面间导航时向他们反馈。

使用JavaScript来确保用户以表单形式输入有效的信息,这可以节省你的业务时间和开支。

使用JavaScript,根据用户的操作可以创建定制的HTML页面。

JavaScript还可以处理表单,设置cookie,即时构建HTML页面以及创建基于Web的应用程序。

JavaScript不能做什么?

JavaScript是一种客户端语言。(实际上,也存有服务器端实现的JavaScript版本)。也就是说,设计它的目的是在用户的机器上执行任务,而不是在服务器上。因此,JavaScript有一些固有的限制,这些限制主要出于如下安全原因:
1.JavaScript不允许读写客户机器上的文件。这是有好处的,因为你肯定不希望网页能够读取自己硬盘上的文件,或者能够将病毒写入硬盘,或者能够操作你的计算机上的文件。唯一例外是,JavaScript可以写到浏览器的cookie文件,但是也有一些限制。
2.JavaScript不允许写服务器机器上的文件。尽管写服务器上的文件在许多方面是很方便的(比如存储页面点击数或用户填写表单的数据),但是JavaScript不允许这么做。相反,需要用服务器上的一个程序处理和存储这些数据。这个程序可以是Perl或者PHP等语言编写的CGI运行在服务器上的程序或者Java程序

3.JavaScript不能关闭不是它自己打开的窗口。这是为了避免一个站点关闭其他任何站点的窗口,从而独占浏览器。

4.JavaScript不能从来自另一个服务器的已经打开的网页中读取信息。换句话说,网页不能读取已经打开的其它窗口中的信息,因此无法探查访问这个站点冲浪者还在访问其它哪些站点。

Ajax是什么?

Ajax是一种创建交互式web应用程序的方式。Ajax是ASynchronouS JavaScript and
XML(异步JavaScript和xml)的缩写,这个词是由web开发人员JeSSe JameS
Garrett在2005年年初首创的。严格地说,Ajax只是JavaScript的一小部分(尽管这一部分特别流行)。但是,随着频繁的使用,这个词不再指某种技术本身(比如Java或JavaScript)。
在大多数情况下,Ajax一般是指以下这些技术的组合:

XMTML;

CSS(CaScading Style Sheet,层叠样式表);

使用JavaScript访问的DOM(Document Object Model,文档对象模型);

XML,这是在服务器和客户端之间传输的数据格式;

XMLHttpRequeSt,用来从服务器获取数据。

Ajax的好处是:

应用程序的大多数处理在用户的浏览器中发生,而且对服务器的数据请求往往很短。所以可以使用Ajax建立功能丰富的应用程序,这些应用程序依赖基于web的数据,但是其性能远远超过老式的,因为老式方法要求服务器传回整个HTML页面来响应用户操作。
一些公司已经在Ajax方面投入大量资金,尤其是Google。Google已经建立了几个著名的Ajax应用程序,包括Gmail(基于web的电子邮件),Google
calendar,Google docS和Google
mapS。另外一个大型的Ajax支持者Yahoo!,它使用Ajax增强个性化的MY
Yahoo门户,Yahoo首页,Yahoo
Mail,等等。这两家公司都向公众开放了其web应用程序的接口,人们可以使用这些程序会获得地图并且在地图上加上有意思,有用或者好玩的信息,比如洛杉矶地区所有日本餐馆的位置或者电影射鹏的位置。

1、JavaScript

定义:

javaScript的简写形式就是JS,是由Netscape公司开发的一种脚本语言,一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能(其编写的程序可以被嵌入到HTML或XML页面中,并直接在浏览器中解释执行)。

组成部分:

核心(ECMAScript)、文档对象模型(Document Object
Model,简称DOM)、浏览器对象模型(Browser Object Model,简称BOM)

描述:

Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。

Javascript是由 Netscape公司开发的一种脚本语言(scripting
language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。

Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。

Javascript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。

主流的javaScript框架有:YUI ,Dojo,Prototype,jQuery...

2、Ajax

定义:

AJAX即“Asynchronous JavaScript and
XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James
Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。

AJAX不是一个技术,它实际上是几种技术,每种技术都有其独特之处,合在一起就成了一个功能强大的新技术。

组成:

基于XHTML和CSS标准的表示;

使用Document Object Model进行动态显示和交互;

使用XML和XSLT做数据交互和操作;

使用XML HttpRequest与服务器进行异步通信;

使用JavaScript绑定一切。

描述:

Ajax是结合了Java技术、XML以及JavaScript等编程技术,可以让开发人员构建基于Java技术的Web应用,并打破了使用页面重载的管理。

Ajax技术使用非同步的HTTP请求,在Browser和Web
Server之间传递数据,使Browser只更新部分网页内容而不重新载入整个网页。

Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。

3、jQuery

定义:

jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML
documents、events、实现动画效果,并且方便地为网站提供AJAX交互。

特点:

轻量级、链式语法、CSS1-3选择器、跨浏览器、简单、易扩展;

jQuery是一种独立于服务器端代码的框架,独立于ASP.NET或者JAVA;

jQuery是当前很流行的一个JavaScript框架,使用类似于CSS的选择器,可以方便的操作HTML元素,拥有很好的可扩展性,拥有不少插件。

描述:

对于程序员来说,简化javascript和ajax编程,能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度。

对于用户来说,改善了页面的视觉效果,增强了与页面的交互性,体验更绚丽的网页物资。

javaScript框架实际上是一系列工具和函数。

二、三者的关系

下面我用一张导图来阐述这三者的关系:

解释:

javaScript是用于Web客户端开发的脚本语言,Ajax是基于JS语言,主要组合JS、CSS、XML三种技术的新技术,是用于创建交互式网页应用的网页开发技术。jQuery是JS的框架,基于JS语言,集合Ajax技术开发出来的JS库,封装JS和Ajax的功能,提供函数接口,大大简化了Ajax,JS的操作。

402com永利1站 3

您可能感兴趣的文章:

  • javascript jQuery $.post $.ajax用法
  • 详谈 Jquery Ajax异步处理Json数据.
  • 跨域请求之jQuery的ajax jsonp的使用解惑
  • jQuery Ajax异步处理Json数据详解
  • Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
  • JQuery处理json与ajax返回JSON实例代码
  • jquery的ajax和getJson跨域获取json数据的实现方法
  • jquery ajax,ashx,json的用法总结
  • jquery序列化form表单使用ajax提交后处理返回的json数据
  • 通过Jquery的Ajax方法读取将table转换为Json
  • jquery的ajax异步请求接收返回json数据实例
  • 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
  • jQuery+ajax中getJSON() 用法实例

在上篇文章给大家介绍了javascript jquery
ajax的小结,今天接着给大家介绍javascript
jquery与ajax的关系,感...

作者 | GitHub 前端工程团队

译者 | 无明

编辑 | 覃云 - 前端之巅

最近,我们将 jQuery 完全从 GitHub.com
的前端代码中移除了,这标志着我们数年来逐步移除 jQuery
这个渐进式的过程终于结束了,这对我们来说是一件里程碑式的事件。这篇文章将介绍过去我们是如何依赖上
jQuery
的,随着时间地推移,我们意识到不再需要它,但到最后我们并没有使用另一个库或框架取代它,而是使用标准的浏览器
API 实现了我们所需要的一切。

早期,jQuery 对我们意义重大

GitHub.com 在 2007 年底开始使用 jQuery 1.2.1,那是谷歌发布 Chrome
浏览器的前一年。当时还没有通过 CSS 选择器来查询 DOM
元素的标准方法,也没有动态渲染元素的样式的标准方法,而 Internet Explorer
的 接口与其他很多 API 一样,在浏览器之间存在不一致性问题。

jQuery 让 DOM 操作、创建动画和“AJAX”请求变得相当简单,基本上,它让 Web
开发人员能够创建更加现代化的动态 Web 体验。最重要的是,使用 jQuery
为一个浏览器开发的代码也适用于其他浏览器。在 GitHub 的早期阶段,jQuery
让小型的开发团队能够快速进行原型设计并开发出新功能,而无需专门针对每个
Web 浏览器调整代码。

基于 jQuery 简单的接口所构建的扩展库也成为 GitHub.com
前端的基础构建块:pjax(
facebox(

我们将永远不会忘记 John Resig 和 jQuery
贡献者创建和维护的这样一个有用的基本库。

后来的 Web 标准

多年来,GitHub
成长为一家拥有数百名工程师的公司,并逐渐成立了一个专门的团队,负责 Java
代码的规模和质量。我们一直在排除技术债务,有时技术债务会随着依赖项的增多而增长,这些依赖项在一开始会为我们带来一定的价值,但这些价值也随着时间的推移而下降。

我们可以将 jQuery 与现代浏览器支持的 Web 标准的快速演化进行比较:

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。