简介:
在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String、Math、Array、Date、RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的。
<script language="javascript">var aa=Number.MAX_VALUE; //利用数字对象获取可表示最大数var bb=new String("hello JavaScript"); //创建字符串对象var cc=new Date();//创建日期对象var dd=new Array("星期一","星期二","星期三","星期四"); //数组对象</script>
3.1 String对象
字符串对象创建
字符串创建(两种方式)
① 变量 = “字符串”
② 字串对象名称 = new String (字符串)
1 2 | var str1= "hello world" ; var str1= new String( "hello word" ); |
字符串对象的属性和函数
??????x.length ????????----获取字符串的长度 x.toLowerCase() ???????----转为小写 x.toUpperCase() ???????----转为大写
x.trim() ??????????????----去除字符串两边空格 ??????----字符串查询方法x.charAt(index) ????????----str1.charAt(index);----获取指定位置字符,其中index为要获取的字符索引x.indexOf(findstr,index)----查询字符串位置x.lastIndexOf(findstr) ?x.match(regexp) ????????----match返回匹配字符串的数组,如果没有匹配则返回nullx.search(regexp) ???????----search返回匹配字符串的首字符位置索引 ???????????????????????示例: ???????????????????????var str1="welcome to the world of JS!"; ???????????????????????var str2=str1.match("world"); ???????????????????????var str3=str1.search("world"); ???????????????????????alert(str2[0]); ?// 结果为"world" ???????????????????????alert(str3); ????// 结果为15 ???????????????????????----子字符串处理方法x.substr(start, length) ----start表示开始位置,length表示截取长度x.substring(start, end) ----end是结束位置x.slice(start, end) ????----切片操作字符串 ???????????????????????示例: ???????????????????????????var str1="abcdefgh"; ???????????????????????????var str2=str1.slice(2,4); ???????????????????????????var str3=str1.slice(4); ???????????????????????????var str4=str1.slice(2,-1); ???????????????????????????var str5=str1.slice(-3,-1); ???????????????????????????alert(str2); //结果为"cd" ???????????????????????????????????????????????????????alert(str3); //结果为"efgh" ???????????????????????????????????????????????????????alert(str4); //结果为"cdefg" ???????????????????????????????????????????????????????alert(str5); //结果为"fg"x.replace(findstr,tostr) ---- ???字符串替换x.split(); ????????????????----分割字符串 ????????????????????????????????var str1="一,二,三,四,五,六,日"; ????????????????????????????????var strArray=str1.split(","); ???????????????????????????????alert(strArray[1]);//结果为"二" ???????????????????????????????x.concat(addstr) ????????---- ???拼接字符串
3.2 Array对象
3.2.1 数组创建
创建数组的三种方式:
创建方式1:var arrname = [元素0,元素1,….]; ?????????// var arr=[1,2,3];创建方式2:var arrname = new Array(元素0,元素1,….); // var test=new Array(100,"a",true);创建方式3:var arrname = new Array(长度); ????????????// ?初始化数组对象: ???????????????var cnweek=new Array(7); ???????????????????cnweek[0]="星期日"; ???????????????????cnweek[1]="星期一"; ???????????????????... ???????????????????cnweek[6]="星期六";
创建二维数组:
3.2.2 数组对象的属性和方法
join方法:
concat方法:
数组排序-reverse sort:
数组切片操作:
删除子数组:
数组的push和pop:
数组的shift和unshift:
总结js的数组特性:
3.3 Date对象
3.3.1 创建Date对象
//方法1:不指定参数var nowd1=new Date();alert(nowd1.toLocaleString( ));//方法2:参数为日期字符串var nowd2=new Date("2004/3/20 11:12");alert(nowd2.toLocaleString( ));var nowd3=new Date("04/03/20 11:12");alert(nowd3.toLocaleString( ));//方法3:参数为毫秒数var nowd3=new Date(5000);alert(nowd3.toLocaleString( ));alert(nowd3.toUTCString());//方法4:参数为年月日小时分钟秒毫秒var nowd4=new Date(2004,2,20,11,12,0,300);alert(nowd4.toLocaleString( ));//毫秒并不直接显示
Date对象的方法—获取日期和时间
获取日期和时间getDate() ????????????????获取日getDay () ????????????????获取星期getMonth () ??????????????获取月(0-11)getFullYear () ???????????获取完整年份getYear () ???????????????获取年getHours () ??????????????获取小时getMinutes () ????????????获取分钟getSeconds () ????????????获取秒getMilliseconds () ???????获取毫秒getTime () ???????????????返回累计毫秒数(从1970/1/1午夜)
实例练习:
Date对象的方法—设置日期和时间
Date对象的方法—日期和时间的转换
3.4Math对象
//该对象中的属性方法 和数学有关. ??
abs(x) ???返回数的绝对值。exp(x) ???返回 e 的指数。floor(x)对数进行下舍入。log(x) ???返回数的自然对数(底为e)。max(x,y) ???返回 x 和 y 中的最高值。min(x,y) ???返回 x 和 y 中的最低值。pow(x,y) ???返回 x 的 y 次幂。random() ???返回 0 ~ 1 之间的随机数。round(x) ???把数四舍五入为最接近的整数。sin(x) ???返回数的正弦。sqrt(x) ???返回数的平方根。tan(x) ???返回角的正切。//方法练习: ???????//alert(Math.random()); // 获得随机数 0~1 不包括1. ???????//alert(Math.round(1.5)); // 四舍五入 ???????//练习:获取1-100的随机整数,包括1和100 ????????????//var num=Math.random(); ????????????//num=num*10; ????????????//num=Math.round(num); ????????????//alert(num) ???????//============max ?min========================= ???????/* alert(Math.max(1,2));// 2 ???????alert(Math.min(1,2));// 1 */ ???????//-------------pow-------------------------------- ???????alert(Math.pow(2,4));// pow 计算参数1 的参数2 次方.
3.5Function 对象(重点)
3.5.1 函数的定义
1 2 3 | function 函数名 (参数){?<br> 函数体;
return 返回值; } |
功能说明:
可以使用变量、常量或表达式作为函数调用的参数
函数由关键字function定义
函数名的定义规则与标识符一致,大小写是敏感的
返回值必须使用return
Function 类可以表示开发者定义的任何函数。
用 Function 类直接创建函数的语法如下:
1 | var 函数名 = new Function( "参数1" , "参数n" , "function_body" ); |
虽然由于字符串的关系,第二种形式写起来有些困难,但有助于理解函数只不过是一种引用类型,它们的行为与用 Function 类明确创建的函数行为是相同的。
示例:
注意:js的函数加载执行与python不同,它是整体加载完才会执行,所以执行函数放在函数声明上面或下面都可以:
3.5.2 Function 对象的属性
如前所述,函数属于引用类型,所以它们也有属性和方法。
比如,ECMAScript 定义的属性 length 声明了函数期望的参数个数。
1 | alert(func1.length) |
3.5.3 Function 的调用
3.5.4函数的内置对象arguments
3.5.4匿名函数
BOM对象
window对象
所有浏览器都支持 window 对象。
概念上讲.一个html文档对应一个window对象.
功能上讲: 控制浏览器窗口的.
使用上讲: window对象不需要创建对象,直接使用即可.
Window 对象方法
alert() ???????????显示带有一段消息和一个确认按钮的警告框。confirm() ?????????显示带有一段消息以及确认按钮和取消按钮的对话框。prompt() ??????????显示可提示用户输入的对话框。open() ????????????打开一个新的浏览器窗口或查找一个已命名的窗口。close() ???????????关闭浏览器窗口。
setInterval() ?????按照指定的周期(以毫秒计)来调用函数或计算表达式。clearInterval() ???取消由 setInterval() 设置的 timeout。setTimeout() ??????在指定的毫秒数后调用函数或计算表达式。clearTimeout() ????取消由 setTimeout() 方法设置的 timeout。scrollTo() ????????把内容滚动到指定的坐标。
方法使用
1、alert confirm prompt以及open函数
示例:
2、setInterval,clearInterval
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
1 2 | 语法:<br> setInterval(code,millisec) 其中,code为要调用的函数或要执行的代码串。millisec周期性执行或调用 code 之间的时间间隔,以毫秒计。 |
示例:
DOM对象
什么是HTML DOM
- HTML Document Object Model(文档对象模型)
- HTML DOM 定义了访问和操作HTML文档的标准方法
- HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)
DOM树
画dom树是为了展示文档中各个对象之间的关系,用于对象的导航。
DOM节点
节点类型
HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
整个文档是一个文档节点
每个 HTML 标签是一个元素节点
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点
其中,document与element节点是重点。
节点关系
节点树中的节点彼此拥有层级关系。
父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。
- 在节点树中,顶端节点被称为根(root)
- 每个节点都有父节点、除了根(它没有父节点)
- 一个节点可拥有任意数量的子
- 同胞是拥有相同父节点的节点
下面的图片展示了节点树的一部分,以及节点之间的关系:
访问 HTML 元素(节点),访问 HTML 元素等同于访问节点,我们能够以不同的方式来访问 HTML 元素。
节点查找
直接查找节点
1 2 3 4 | document.getElementById(“idname”) document.getElementsByTagName(“tagname”) document.getElementsByName(“name”) document.getElementsByClassName(“name”) |
注意:设计到寻找元素,注意<script>标签的位置!
导航节点属性
‘‘‘
parentElement ??????????// 父节点标签元素
children ???????????????// 所有子标签
firstElementChild ??????// 第一个子标签元素
lastElementChild ???????// 最后一个子标签元素
nextElementtSibling ????// 下一个兄弟标签元素
previousElementSibling ?// 上一个兄弟标签元素‘‘‘
注意,js中没有办法找到所有的兄弟标签!
节点操作
创建节点:
1 | createElement(标签名) :创建一个指定名称的元素。 |
例:var tag=document.createElement(“input")
tag.setAttribute(‘type‘,‘text‘);
添加节点:
1 2 3 4 5 | 追加一个子节点(作为最后的子节点) somenode.appendChild(newnode) 把增加的节点放到某个节点的前边 somenode.insertBefore(newnode,某个节点); |
删除节点:
1 | removeChild():获得要删除的元素,通过父元素调用删除 |
替换节点:
1 | somenode.replaceChild(newnode, 某个节点); |
节点属性操作:
1、获取文本节点的值:innerText innerHTML
2、attribute操作
????elementNode.setAttribute(name,value) ????????elementNode.getAttribute(属性名) ???????<-------------->elementNode.属性名(DHTML) ????elementNode.removeAttribute(“属性名”);
3、value获取当前选中的value值
1.input
2.select (selectedIndex)
3.textarea
4、innerHTML 给节点添加html代码:
该方法不是w3c的标准,但是主流浏览器支持
tag.innerHTML = “<p>要显示内容</p>”;
5、关于class的操作:
1 2 3 | elementNode.className elementNode.classList.add elementNode.classList.remove |
6、改变css样式:
1 2 3 | <p id = "p2" >Hello world!< / p> document.getElementById( "p2" ).style.color = "blue" ;
.style.fontSize = 48px |
DOM Event(事件)
事件类型
onclick ???????当用户点击某个对象时调用的事件句柄。ondblclick ????当用户双击某个对象时调用的事件句柄。onfocus ???????元素获得焦点。 ??????????????练习:输入框onblur ????????元素失去焦点。 ??????????????应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.onchange ??????域的内容被改变。 ????????????应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)onkeydown ?????某个键盘按键被按下。 ?????????应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.onkeypress ????某个键盘按键被按下并松开。onkeyup ???????某个键盘按键被松开。
onload ????????一张页面或一幅图像完成加载。
onmousedown ???鼠标按钮被按下。onmousemove ???鼠标被移动。onmouseout ????鼠标从某元素移开。onmouseover ???鼠标移到某元素之上。onmouseleave ??鼠标从元素离开onselect ??????文本被选中。onsubmit ??????确认按钮被点击。
绑定事件方式
方式1:
<div >点我呀</div><script> ???function foo(self){ ??????????// 形参不能是this; ???????console.log("点你大爷!"); ???????console.log(self); ??????}</script>
方式2:
<p >试一试!</p><script> ???var ele=document.getElementById("abc"); ???ele.onclick=function(){ ???????console.log("ok"); ???????console.log(this); ???// this直接用 ???};</script>
事件介绍
1、onload:
onload 属性开发中 只给 body元素加.这个属性的触发 标志着 页面内容被加载完成.应用场景: 当有些事情我们希望页面加载完立刻执行,那么可以使用该事件属性.
2、onsubmit:
当表单在提交时触发. 该属性也只能给form元素使用.应用场景: 在表单提交前验证用户输入是否正确.如果验证失败.在该方法中我们应该阻止表单的提交.
3、事件传播:
4、onselect:
5、onchange:
6、onkeydown:
Event 对象:Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件通常与函数结合使用,函数不会在事件发生前被执行!event对象在事件发生时系统已经创建好了,并且会在事件函数被调用时传给事件函数.我们获得仅仅需要接收一下即可.比如onkeydown,我们想知道哪个键被按下了,需要问下event对象的属性,这里就时KeyCode.
7、onmouseout与onmouseleave事件的区别:
js(二)对象
原文地址:http://www.cnblogs.com/0704L/p/7700265.html