JS中的数据类型(见《Jquery实战<附录>》)
一、所有数据类型的常量都看作对象。
(一)、JS自带的数据类型怎样创建对象?
number、String这些基本类型的值,23、"abc"等常量本身就是对象。
Date类型:通过一个构造函数创建对象,new Date(2015,7,8)
(二)、用户怎样创建自定义的对象?
1.通过var o = new Object();
然后动态的指定对象o的属性。
2.通过对象字面量;
3.通过定义一个构造函数。
二、JS自定义对象的特点
对象包含属性,
属性包含属性名和属性值,
属性名是字符串,属性值可以是任何对象。
创建一个自定义JS对象,更像是定义了一种临时语言,用一些字符串去分别对应一个常量(包括函数)。
JS里的一个函数是一个常量,和1,"abc"这些基本数据没有区别。
三、JS回调函数
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.
<html> <head> <title>回调函数(callback)</title> <script language="javascript" type="text/javascript"> function a(callback) { alert("我是parent函数a!"); alert("调用回调函数"); callback(); } function b(){ alert("我是回调函数b"); } function c(){ alert("我是回调函数c"); } function test() { a(b); a(c); } </script> </head> <body> <h1>学习js回调函数</h1> <button onClick=test()>click me</button> <p>应该能看到调用了两个回调函数</p> </body> </html>
四、闭包
JS、过程式编程,允许在一个外部函数里定义使用内部函数。而对象式编程一般不允许在一个函数里定义另外一个函数。
因此也意味着在过程式编程存在一个对象式编程不存在的现象:内部函数可能比外部函数的生命周期要长。
什么是闭包?
闭包这个概念是针对过程式编程的。
即一个内部函数引用了外部函数定义的一个局部变量,则在外部函数执行结束后,内部函数仍可以使用所引用的外部变量,即这些变量的生命周期超出了定义它的外部函数的生命周期,形成了内部函数的闭包。
五、选择器:
(一)、确定元素所属DOM的层次
$("*"):所有元素
$("#id"):根据id选择
$(".class"):根据所属的类
$("p"):根据元素名
$("body>div"):作为<body>直接子节点的<div>
$("body>div:has(a)"):作为<body>直接子节点的<div>、包含链接(<a>)的<div>。
(二)、对选出的同类元素进行筛选
1.根据在同类元素中的位置
$("p:first"):
$("tr:even")
$("ul li:eq(3)")
$("ul li:gt(3)")
2.根据元素的属性
$("[href]"):所有带有href属性的元素
$("[href='#']"):所有 href 属性的值等于 "#" 的元素
$("[href!='#']"):所有 href 属性的值不等于 "#" 的元素
$("[href$='.jpg']"):所有 href 属性的值包含以 ".jpg" 结尾的元素
$(":contains('W3School')"):包含指定字符串的元素
$(":empty"):无子(元素)节点的所有元素
$("p:hidden"):所有隐藏的<p>元素
$("table:visible"):所有可见的表格
操作input元素的选择器
$(":input"):所有 <input> 元素
$(":text"):所有 type="text" 的 <input> 元素
$(":password"):所有 type="password" 的 <input> 元素
$(":enabled"):所有激活的 input 元素
$(":disabled"):所有禁用的 input 元素
$(":selected"):所有被选取的 input 元素
$(":checked"):所有被选中的 input 元素
(三)、其他选择
$(":header")所有标题元素 <h1> - <h6>
$(":animated")所有动画元素