目录
javascript对象与数组
javascript内部对象
object对象
1.创建object对象
语法:obj =new Object([value])
obj:必选项。要赋值为Object对象的变量名。
value:可选项。任意一种JScript基本数据类型(Number、Boolean或String)。如果value为一个对象,返回不做改动的该对象。如果value为null、undefined,或者没有给出,则产生没有对象的内容。
2.object对象的属性
(1)prototype属性
prototype属性返回对象类型原型的引用。 语法:objectName.prototype
用prototype属性可以提供对象的类的一组基本功能。对象的新实例“继承”赋予该对象原型的操作。
function max(){
var i,max=this[0];
for(i=1;i<this.length;i++)
{
if(max<this[i])
max=this[i];
}
return max;
}
Array.prototype.max=max;
var x=new Array(1,2,3,4,5,6);
var y=x.max();
document.write(y);
(2)constructor属性
constructor属性表示创建对象的函数。 语法:object.constructor
constructor属性是所有具有prototype的对象的成员,包括除Global和Math对象以外的所有JScript固有对象。constructor属性保存了对构造特定对象的实例的函数的引用。例如:
x=new String("Hi");
if(x.constructor==String) //进行处理(条件为真)
3.object对象的方法
(1)toLocaleString()方法
toLocaleString()方法返回一个日期,该日期使用当前区域设置并已被转换为字符串。
语法:dateObj.toLocaleString()
dateObj:必选项。为任意的Date对象。
toLocaleString()方法返回一个string对象,该对象中包含了用当前区域设置的默认格式表示的日期。
(2)toString()方法
toString()方法返回对象的字符串表示
语法:objectname.toString([radix])
objectname:必选项。要得到的字符串表示的对象。
radix:可选项。指定将数字值转换为字符串时的进制。
(3)valueOf()方法
valueOf()方法返回指定对象的原始值。
object.valueOf()
String对象
1.创建String对象
string对象是动态对象,用于操纵和处理文本串,可以通过该对象在程序中获取字符串长度、提取子字符串,以及将字符串转换为大写或小写字符。
语法:var newstr=new String(StringText)
newstr:创建的String对象名
StringText:可选项。字符串文本。
2.String对象的属性
在string对象中有三个属性,分别是length、constructor和prototype。
(1)length属性:用于获取当前字符串的长度。
语法:stringObject.length
(2)constructor属性:用于对当前对象的函数的引用。
语法:object.constructor
(3)prototype属性:可以为对象添加属性和方法。
语法:object.prototype.name=value
object:对象名或字符变量名。
name:要添加的属性名。
value:添加的属性值。
3.String对象的方法
event对象
javascript的event对象用来描述javascript的事件,主要作用于IE和NN4以后的各个浏览器版本中。event对象代表事件状态,如事件发生的元素、键盘状态、鼠标位置和鼠标按钮状态。一旦事件发生,便会生成event对象,如单击一个按钮,浏览器内存中就产生相应的event对象。
1.在IE中引用event对象
在IE中,event对象被作为Windows对象属性访问:window.event
由于window引用部分是可选的,因此脚本像全局引用一样对待event对象:event.propertyName
2.在W3C中引用event对象
在W3C事件模型中,event对象引用比较复杂。在多数情况下,必须地将event对象作为1个参数传通到事件处理函数中。event 对象有时可自动作为参数传递,这依赖于事件处理函数如何与对象绑定。
如果使用原始的方法将事件处理函数与对象绑定(通过元素标记的一个属性),则必须把event对象作为参数传递。
例如:onKeyUp="example(event)"
这是在W3C模型中唯一像全局引用一样明确引用event 对象的方式,这个引用 只作为事件处理函数的参数,在别的内容中不起作用。如果有多个参数,则event对象引用可以以任意顺序排列,例如:
onKeyUp= "example(this,event)"
与元素绑定的函数定义应该有一个参数变量来“捕获”event 对象参数:
function example(widget,evt)..}
注意:这个参数变量名称没有任何限制,在本书的例子中使用event对象或evt。在跨浏览器的的脚本中使用时,应避免用event作为参数变量名,以避免与IE的event属性冲突。
3.event对象的属性
(1)altLeft属性
altLeft属性设置获取左alt键的状态。检索左alt键的当前状态,返回值true表示关闭,false表示不关闭。
语法:[window.]event.altLeft
由于altLeft属性是Boolean值,因此可以将属性应用到if语句当中,根据获取的值不同而执行不同的操作。
(2)ctrlLeft属性
ctrlLeft属性设置获取左Ctrl键的状态。检索左Ctrl键的当前状态,返回值true表示关闭,false表示不关闭。
语法:[window.]event.ctrlLeft
由于ctrlLeft属性是Boolean值,因此可以将属性应用到if语句当中,根据获取的值不同而执行不同的操作。
(3)shiftLeft属性
shiftLeft属性设置获取左shift键的状态。检索左shift键的当前状态,返回值true表示关闭,false表示不关闭。
语法:[window.]event.shiftLeft
由于shiftLeft属性是Boolean值,因此可以将属性应用到if语句当中,根据获取的值不同而执行不同的操作。
function appendText(str) {
document.body.innerHTML += ("");
}
document.onkeydown=function(){
//使用if语句判断Ctrl键、alt键和shift键是否被按下
if(event.ctrlKey||event.altKey||event.shiftKey){
//如果按下任意一键,执行下面内容
alert("这是新的世界!");
appendText("ctrlKey");
}
}
(4)button属性
button属性设置获取事件发生时用户所按的鼠标键。
语法:[window.]event.button
值0---按下左键 值1------按下中键 值2--------按下右键
function gos(){
if(event.button==1){
alert("世界欢迎您!");
return false;
}
}
document.onmousedown=gos;
(5)clientX属性
clientX属性获取鼠标在浏览器窗口中的X坐标,是一个只读属性,即只能获取鼠标的当前位置,不能改变鼠标的位置。
语法:[window.]event.clientX
(6)clientY属性
clientY属性获取鼠标在浏览器中的Y坐标,是一个只读属性,即只能获取鼠标的当前位置,不能改变鼠标的位置。
语法:[window.]event.clientY
例子:设计一个文字跟随鼠标移动的实例,当鼠标指针移动到文字上方时,拖动鼠标即可使工作区中的文字跟随鼠标移动。
<head>
<meta charset="utf-8" />
<title>JavaScript学习一</title>
<style type="text/css">
.move_out{
position: relative;
cursor: hand;
font-family: "微软雅黑";
}
</style>
<!--js代码需要编写到script的标签中-->
<script type="text/javascript">
var move_out=false; //定义变量,值为false
var z,x,y; //定义变量
function move(){ //创建函数
if(event.button==move_out){ //判断当前鼠标是否在左键按下状态
z.style.pixelLeft=temporarily1+event.clientX-x;//获取当前鼠标位置
z.style.pixelTop=temporarily2+event.clientY-y; //获取当前鼠标位置
return false;
}
}
function down(){ //创建自定义函数,实现文字的移动
if(event.srcElement.className=="move_out"){ //创建srcElement属性获取当前事件的对象
move_out=true;
z=event.srcElement;
temporarily1=z.style.pixelLeft;
temporarily2=z.style.pixelTop;
x=event.clientX; //获取鼠标在窗口X位置
y=event.clientY; //获取鼠标在窗口Y位置
document.onmousemove=move;//当鼠标移动时执行move()函数
}else{
move_out=false;
}
}
document.onmousedown=down;
</script>
</head>
<body>
<font color="blue" size="4" class="move_out">卡饭首付款你发</font>
</body>
(7)X属性
X属性设置获取鼠标指针位置相对于CSS属性中有position属性的上级元素的X轴坐标。如果CSS属性中没有position属性的上级元素,默认以body元素为参考对象。
语法:[window.]event.X
(8)Y属性
Y属性设置获取鼠标指针位置相对于CSS属性中有position属性的上级元素的Y轴坐标。如果CSS属性中没有position属性的上级元素,默认以body元素为参考对象。
语法:[window.]event.Y
<head>
<meta charset="utf-8" />
<title>JavaScript学习一</title>
<style type="text/css">
.yellow{
visibility: visible;
background-color: bisque;
position: absolute;
top: 60px;
left: 200px;
width: 300px;
height: 200px;
filter: revealTrans(transition=12,duration=0.1) blendTrans(duration=0.1);
}
#title{
background-color: greenyellow;
padding: 2px;
font-size: 13px;
cursor: move;
}
</style>
<script type="text/javascript">
var Obj="none";
var pX;
var pY;
document.onmousemove=div_move;
document.onmouseup=div_up;
/*编写用于实现动态移动层的javascript代码。创建自定义函数div_down(),
* 获取当前鼠标与层左边界和上边界的距离*/
function div_down(tag){
Obj=tag;
pX=parseInt(document.all(Obj).style.left)-event.x;
pY=parseInt(document.all(Obj).style.left)-event.y;
}
/*创建自定义函数div_move(),用于移动层的位置*/
function div_move(){
if(Obj!="none"){
document.all(Obj).style.left=pX+event.x;
document.all(Obj).style.top=pX+event.y;
event.returnValue=false;
}
}
/*创建自定义函数div_up(),当松开鼠标时,释放对当前层的控制*/
function div_up(){
Obj="none";
}
/*创建自定义函数hide(),用于将层以动态效果隐藏*/
function hide(divid){
divid.filters.revealTrans.apply();
divid.style.visibility="hidden";
divid.filters.revealTrans.play();
}
/*在页面上移动鼠标时,通过页面的onmousemove事件调用自定义函数div_move()*/
document.onmousemove=div_move();
/*在页面上松开鼠标时,通过页面的onmouseup事件调用自定义函数div_up()*/
document.onmouseup=div_up();
</script>
</head>
<body>
<!--在页面中添加两个层,并且其中一个层包含另一个层。在div1层的鼠标按下事件onmousedown
触发时调用自定义函数div_down()-->
<div id="div1" class="yellow">
<div id="title" onmousedown=div_down("div1")>出师表</div>
</div>
</body>
(9)cancelBubble属性
cancelBubble属性检测是否接受上层元素的事件控制。如果该属性的值是false,则允许被上层元素的世界控制,如果是true,则不被上层元素的事件控制。
语法:[window.]event.cancelBubble[= cancelBubble]
该属性的值是一个可读写的布尔值,默认值为false。
(10)srcElement属性
srcElement属性设置获取触发事件的对象。srcElement属性是事件初始目标的HTML元素对象引用。由于事件通过元素容器层次进行处理,且可以在任意一个层次进行处理,因此由一个属性指向产生初始事件的元素是很有帮助的。
语法:[window.]event.srcElement
通过该属性可以读、写属于该元素的属性,并调用它的任何方法。
<script type="text/javascript">
/*创建自定义函数select(),保存发生事件的文档元素信息*/
var lastSelection=null;
function select(element){
var e,r,c;
if(element==null){
e=event.srcElement; //获取body元素的初始记录
}else{
e=element;
}
if(e.tagName=="TD"){
c=findcell(e);
if(c!=null){
if(lastSelection!=null){
deselectctroworcell(window.lastSelection);
}
selectroworcell(c);
lastSelection=c;
}
}
window.event.cancelBubble=true; //取消冒泡语句,用于防止向下一个外层对象冒泡
}
table1.onclick=select();
/*创建自定义函数findcell(),用于判断选中位置是否为单元格*/
function findcell(e){
if(e.tagName=="TD"){
return e;
}else if(e.tagName=="BODY"){
return null;
}else{
return findcell(e.parentElement);
}
}
/*创建自定义函数selectroworcell(),用于改变单元格的前景色和背景色*/
function selectroworcell(r){
r.runtimeStyle.backgroundColor="blue";
r.runtimeStyle.color="white";
}
/*创建自定义函数deselectctroworcell(),用于将前景色和背景色恢复正常*/
function deselectctroworcell(r){
r.runtimeStyle.backgroundColor="";
r.runtimeStyle.color="";
}
</script>