`
zhtch_123
  • 浏览: 81018 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

AJAX学习之序列一:JavaScript关键特征,你了解几个?

 
阅读更多

JavaScript 相信做 web 编程的程序员没有人不熟悉。不管是 .net 还是 JavaEE ,作为前端的重要技术到处都会用到。大学开始学 web 编程的时候,感觉 JavaScript 这个玩意挺神奇的。能用来写一些简单验证,如判断空、邮箱格式判断、用正则表达式去空格等。大家肯定都写过 JS ,但是真正去研究 JS 的人不知道有多少。以我个人经验,我总是能在网上找到答案,并能实现一些想要的功能。但是很惭愧对 JS 这门语言真不能说是特别的了解。 AJAX 的风行, ext,dwr,jquery 等各种 js 的框架越来越多。 JS 也可以实现面向对象的一些特征。终于还是有必要对这个使用多年脚本做深入学习。今天算是 AJAX 基础篇的第一篇, JavaScript 的关键特征。

主要内容是看 <Ajax in action> 这本书对于 JS 的介绍,同时结合自己的理解。 JavaScript 的主要特征有 ( 很关键哦,不知道你理解几条 )

1. 弱类型

变量仅仅声明为变量,而不是整数,字符串或者特定类的对象。

Var object 而不是 int a; String b;

经常的变量定义如下 :

var length=10;

var memberId=“abingsky”;

var obj=new Object();

var date = new Date();

var strArr = new Array();

var companyIds=document.getElementById("companyIds").value;

可以从这一点看出来 JavaScript 变量的定义语法有多松散,弹性有多大。对于习惯了 Java C# 的面向对象的严格类型限制的程序员来说,多少有点不习惯。由于 Javascript 是一种动态解释的,所以在运行时会根据值来正确的解释。

2. 动态解释

JS 不需要预先编译。只是存储成文本,在程序运行时由专门的 JS 引擎解释为机器指令。

3. 函数是正常的对象

Java 对象的方法与拥有它的对象绑定在一起,只能通过该对象来调用,而 Javascript 的函数可以附加到对象上,使得它们的行为类似于方法。但是它们可以在上下文中调用,并且在运行是附加到其他对象身上。我觉得这也是 JS 语法松散的一个表现,所有的方法可以像变量一样被赋予不同的对象。例如要在页面装载后做一些操作,可以动态的将某一个函数对象赋值给 window.onload.

Window.onload=function (){

displayDiv=document.getElementById('display');

displayDiv.innerHTML= Hello,World! ”;

附几种常见对象的定义方式:

普通对象

Var myObject=new Object(); 这时候的对象初始化为空,不带有任何属性和方法。可以通过下面方式添加属性和方法:

myObject.shoeSIze=12;

myObject.sayHello=function(){

...

}

数组对象

用中括号括起来

var books=[book1,book2,book3]

JSON 对像

myObject.books={

bestSeller:book1,

cookbook:book2,

spaceFilter:book3

}

4. 构造函数、类和 prototype 属性

所有的 Javascript 对象是相同基类的实例。而这个基类就是有能力在运行时将成员字段和函数与自己绑定在一起的类。所以可以在运行时给对象分配任意属性。

Function MyObject(name,size){

this.name=name;

this.size=size;

}

var myObj=new MyObject ”ttt” 122

设置为 this 关键字的属性的任何东西随后都可以作为对象的一个成员使用。 ( 任何一个函数都可以通过 new 来调用,而生成的对象的属性关键要看该函数里面对于 this 的调用 )

prototype :定义了将自动绑定在对象上的属性和函数。 Prototype 在一定程度上为程序员提供了面向对象非常想要的规律性和熟悉感。个人感觉是 JavaScript 非常精髓的一个地方。

prototype JavaScript 对象的一个属性。函数和属性可以与构造函数的 prototype 关联起来。然后 prototype new 关键字协同工作,当使用 new 调用函数时,函数 prototype 的所以属性和方法会附加到结果对象上。

Function MyObject(name,size){

this.name=name;

this.size=size;

}

MyObject.protype.tellSize=function(){

alert( size of ”+ this.name+ is +this.size);

}

prototype 机制也可以与内建类协同工作。 DOM 节点在 IE 不能扩展,但在其他的核心类在所有主要的浏览器中都是可以扩展的。内建类包括 (Array,Object,Date ) 。如可以为 Array 类定义一些有作用的帮助函数:

Array.prototype.indexof=function(obj){

var result=-1;

for(var i=0;i<this.length;i++){

if(this[i]==obj){

result=i;

break;

}

}

return result;

}

这样定义之后 Array 类就有了一个方法 indexof ,和 java 里的基本一样。

以上是关于 JavaScript 几个关键特点的理解,可参考 Ajax in action 这本书里面的附录介绍。不知道你对 JavaScript 理解多少,一起来学习吧。

 

分享到:
评论

相关推荐

    千方百计笔试题大全

    170、Javascript如何发送一个Ajax请求? 41 171、AJAX都有哪些有点和缺点? 41 172、Ajax和javascript的区别? 41 Servlet部分 42 174、JAVA SERVLET API中forward() 与redirect()的区别? 42 178、如何现实servlet...

    JavaScript王者归来part.1 总数2

     1.7 学习和使用JavaScript的几点建议   1.8 关于本书的其余部分   第2章 浏览器中的JavaScript  2.1 嵌入网页的可执行内容   2.2 赏心悦目的特效   2.3 使用JavaScript来与用户交互  2.4 绕开脚本陷阱 ...

    java面试宝典

    170、Javascript如何发送一个Ajax请求? 41 171、AJAX都有哪些有点和缺点? 41 172、Ajax和javascript的区别? 41 Servlet部分 42 174、JAVA SERVLET API中forward() 与redirect()的区别? 42 178、如何现实servlet...

    最新Java面试宝典pdf版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试笔试资料大全

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    JAVA上百实例源码以及开源项目

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

    java面试题大全(2012版)

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    JAVA面试宝典2010

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典-经典

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2010版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2012版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message...

    java面试宝典2012

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 135 17.介绍一下Hibernate的二级缓存 135 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2012新版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2020修订版V1.0.1.doc

    44、一个几千万数据,发现数据查询很慢,怎么办? 55 六、Java高级部分 56 1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 56 2、sleep() 和 wait() 有...

    asp.net知识库

    与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...

    整理后java开发全套达内学习笔记(含练习)

    以“%”开头,[第几个数值$][flags][宽度][.精确度][格式] printf()的引入是为了照顾c语言程序员的感情需要 格式化输出 Formatter;格式化输入 Scanner;正则表达式 输出格式控制: 转义符: \ddd 1到3位8...

    jquery插件使用方法大全

    多少人,了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样异常简单 代码 (1) $.get("search. do",{id:1},rend); function rend(xml){ alert&#40;xml&#41;; } (2) $.post("search. do",{id:1},rend); ...

    JAVA上百实例源码以及开源项目源代码

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

Global site tag (gtag.js) - Google Analytics