-
JavaScript必知必会
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
JavaScript对象的基本原理
javascript和其他的面向对象的语言一样,都定义一个根本的object类型。
对象如何成为对象
new 操作符和与之相伴的object构造器 var addy=new Object();
对象的属性
var ride = new Object();
ride.make= 'Yamaha';
ride.model = 'V-Star';
ride.year = 2005;
ride.purchased = new Date(2005,3,12);
可以看出javascript中的实例是属性的集合,每一个属性由名称和值组成。Object实例的主要目的就是用作其他对象的已命名集合
javascript可以有嵌套,即属性是其他的对象,通过“.”可以访问嵌套的属性,并且嵌套层次无限制
对于属性的引用,下面三者是等效的 ride.make = ride['make'] = ride[ 'm'+'a'+'k'+'e']
对象字面量 JSON
var ride={
make:‘Yamaha’,
year:2005,
owner:{
name: 'Yolanda',
occupation:'bounty hunter '
}
}
JSON结构:一对花括号所表示的对象,在其内部列举以逗号分隔的多个属性,用冒号分隔的名称和值来表示每一个属性
对象作为窗口属性
把一个引用存储到javascript对象有两种方式:变量和属性
顶层作用域:在任何包含函数体之外。顶层作用域被认为是window作用域
-
函数作为一等公民
函数被认为是对象
javascript中函数被认为是对象,可以被指派给任何变量和对象的属性等,对待函数与对待其他对象是一样的。
所以下面三者是等价的:
- function hello(){ alert(' Hi, There! ');}
- hello=function(){ alert(' Hi, There! ');} //这是函数字面量的写法,可能括号中还有参数
- window.hello=function(){ alert(' Hi, There! ');} //即在HTML页面上创建顶层变量时,变量被创建为window实例的属性
作为回调函数
function hello(){ alert(' Hi, There! ');}
setTimeout(hello,5000); //当计时器过期时函数被调用,因此称为回调函数
更简洁的写法是:setTimeout( function(){ alert(' Hi, There! ');} ,5000); 可避免产生不需要的名称
可以看出函数就是被作为一般的对象,还可以被作为其他函数的参数
this到底是什么
this的javascript实现不同于面向对象里的this. 前者是所引用的对象被称为函数上下文(不是由如何声明函数而是如何调用函数来决定的),而在后者情况下值引用类的实例。
javascript提供了显式的方法控制什么被称作函数上下文,通过function方法call()或apply()来调用函数,可以把函数的上下文设置为任何所想要的东西。
eg var o2={ handle: 'o2' }; var o3={ handle: 'o3' };
function whoAmI () { return this.handle; };
alert(whoAmI.call(o2)); //o2
alert(whoAmI.apply(o3)); //o3
所以,是函数如何被调用决定函数上下文
闭包
闭包就是function实例,外加对于function实例的执行来说必须的、来自环境的本地变量。
$(function(){
var local = 1;
window.setInterval(function(){ //回调函数。回调函数能够有效地引用本地变量是不可或缺的 例如本例中的local。当就绪程序突出后,local声明所在的块超出了作用域,但是函数声明创建的闭包 包括local,因此仍能使用
$(‘#display’).append('<div>At'+ new Date()+ ' local=' +local+'</div>');
local++;
} ,3000);
});
-
JavaScript基础
三种消息框:
警告框 alert("文本")
确认框 confirm("文本")
提示框。 prompt("文本","默认值") 经常用于提示用户在进入页面前输入某个值,当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵,如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
for...in 语句
for...in 语句用于对数组或者对象的属性进行循环操作。for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
for
(变量in
对象){ 在此执行代码}处理错误事件的能力
<html><body><script type="text/javascript">var x=prompt("Enter a number between 0 and 10:","")
try
{ if(x>10)throw "Err1"
//抛出异常else if(x<0)throw "Err2"
}catch(er)
{if(er=="Err1") alert("Error! The value is too high")if(er == "Err2") alert("Error! The value is too low") }</script></body></html>-
遇到的一些问题
url传参中文乱码问题
jsp页面传参之前先进行编码:
var queryName = document.getElementById("queryName").value;
var codeQueryName = encodeURI(encodeURI(queryName));action中获取值再解码
if(request.getParameter("queryName")!=null&&!request.getParameter("queryName").equals("")){
queryStringOriginal=request.getParameter("queryName");
queryStringOriginal = URLDecoder.decode(queryStringOriginal, "UTF-8");
} -
-
- 标签:
- 属性
- 对象
- alert
- 39
- var
- function
- 函数
- queryname
- 变量
- javascript
- jquery
-
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~