javascript学习之入门(四)
/**
*@author sinux
*@date 2013/9/5
*@Content javascript基础入门(四)
*
*/
二,对象基础
0.作用域
a.常见的编程语言都离不开作用域的概念。作用域实际上就是指属性或变量的适用范围。一般来讲有公有,私有,及受保护的作用域之分。
b.实际上,javascript中的所有属性和方法均为公有作用域,没有私有和保护作用域的,显然在js中大谈作用域,除了加深对编程语言的横向比较意识之外,我看不到有什么亮点。
c.虽然js没有静态作用域,不够它可以给构造函数提供属性和方法。在js中,构造函数只是函数,函数也就是个对象,自然就可以有属性和方法了:
function fucTest(){
alert(“123”);
}
fucTest.subFuc=function(){
alert(“456”);
}
fucTest();//123
func.subFuc();//456
1.this关键字
在对象的方法中,关键字this总是指向调用该方法的对象。如:
function showName(){
alert(this.name);
}
var student0=new Object();
var student1=new Object();
student0.name=”sinux”;
student1.name=”linux”;
student0.showName=showName;
student1.showName=showName;
student0.showName();//sinux
student1.showName();//linux
this指针的作用不言而喻。
2.类及对象的定义
快餐啦,没时间细究啦~
不过,对象令人感兴趣的是他的概念以及用它解决问题的方式。
3.对象修改
如何自定义对象内的方法和属性,这个比较高端,现在节省时间略过。
继续学习可以参考《javascript高级程序设计》第126页左右。
4.继承机制
概览,略过!具体学习参考《javascript高级程序设计》第130页左右
三.浏览器中的JS
0.HTML中的js
基础的,概览。
1.SVG中的js
这个pass吧~
2.BOM(浏览器对象模型)
a.了解BOM的对象体系结构
Window——document———anchors
| |
—frames —forms
| |
—history —images
| |
—location —links
| |
—navigator —location
|
—screen
Object
Array
PS:从以上体系图可以看出window占据比较重要的部分,常用的主要对象都以某种联系关联到window
b.window对象
window对象指浏览器窗口,从以上的体系结构可以看出window是BOM的核心,所以除了可以调整浏览器窗口的大小及位置等基本功能外,还具有一定特权,在引用函数、对象或者集合时,我们没有必要显示明确指出是它。
当然,如果一个窗口中嵌套有多个frame框架,在某一框架内编写的代码中的window默认调用的是所在框架。
<!DOCTYPE html>
<html>
<head>
<title>FrameSet And Window Test</title>
</head>
<frameset rows=”100,*”>
<frame src=”Top.htm” name=”top”/>
<frameset cols=”50%,50%”>
<frame src=”Left.htm” name=”Left”/>
<frame src=”Right.htm” name=”Right”/>
</frameset>
</frameset>
</html>
效果图如下:
c.self
作为window的引用,在某一个框架内代表该框架窗口对象。
d.窗口操作
moveBy(dx,dy)把浏览器窗口相对当前位置水平移动dx个像素,垂直移动dy个像素。
moveTo(x,y) 移动浏览器窗口,使它的左上角位于用户屏幕的(x,y)处,接受负数。
resizeBy(dw,dh)把浏览器窗口相对于当前大小,宽度调整dw个像素,高度调整dy个像素。正值表示放大,负值表示缩小。
resizeTo(w,h)把浏览器窗口的大小调整为宽为W个像素,高为h个像素。
一些小问题:
假设通过以上命令调整了浏览器的大小和位置,而没有进行记录,我们该怎么样判断窗口当前的位置和大小呢?
Mozilla、Opera和Safari均提供了window.screenX和window.screenY属性判断窗口位置。并可以运用window.innerWidth和window.innerHeight属性来判断视口的大小,outerWidth和outerHeight属性判断浏览器窗口自身的大小。
PS:不建议频繁对窗口进行大小和位置的变化,这将不利于用户的交互感受。
Code
<script type=”text/javascript”>
var vwin=window.open(“http://www.baidu.com”,”topFrame”,”height=150,width=300,top=10,left=10,resizable=yes”);
vwin.moveTo(100,100);
vwin.risizeTo(200,200);
vwin.close();
</script>
d.系统对话框
(1)alert()
仅仅接受一个参数,作为文本输出。
(2)confirm()
同样接受一个参数,作为提示文本,不过具有OK|Cancel两个按钮,供用户进行选择。
Code
<script type=”text/javascript”>
if(confirm(“Are U sure?”)
alert(“OK”);
else
alert(“Cancel”);
</script>
(3)prompt()
语法:prompt(“Please input your name”,“sinux”);
返回值为提示框中文本域中的字符串。
Code
<script type=”text/javascript”>
if(“sinux”==prompt(“Your name?”))
alert(“OK,sinux.”);
</script>
e.状态栏
没错,就是那个提示你鼠标所在位置的链接信息的状态栏,我们通过status和defaultstatus属性进行改变
f.时间间隔和暂停
(1)暂停 setTimeout()
setTimeout(“alert(“1秒时间到”);”,1000);
setTimeout(“function() {alert(1秒时间到。);}”,1000);
function timeOutTest(){
alert(1秒时间到);
}
setTimeout(timeOutTest,1000);
//取消暂停
var timeOutID=setTimeout(“alert(“1秒时间到”);”,1000);
clearTimeout(timeOutID);
如果不取消暂停,程序将在制定间隔后执行绑定的代码。
(2)时间间隔 setInterval()
语法与以上类似,同时也有clearInterval()与之对应,用法类似。
如果不取消间隔,该间隔绑定的代码将在设定的间隔后重复执行。
g.历史
history属性
go方法用于前进或后退指定数量的页数(历史中),对于历史中不存在的页数(无效页数),不响应。
history.go(1);//前进一页
history.go(-1);//后退一页
history.back();//后退一页
history.forward();//前进一页
history.length//记录浏览器中历史网页的数量
h.document属性
document其实也是window对象的一个属性,其具有以下属性:
alinkColor 激活链接的颜色
bgColor 页面背景色
fgColor 页面文本色
lastModified 最后修改页面的日期,字符串
linkColor 链接的颜色
referrer 历史中后退一个位置的URL
title 标签中显示的文本 可读可写,可以在框架不变的时候轻量级修改标题栏
URL 当前载入页面的URL,可读可写,可以通过修改该值重导航至另一页面
vlinkColor 访问过的链接的颜色
PS:一般我们反对使用这些属性,因为他们引用了body中的就有属性,一般我们可以通过css来达成所需。
此外,document中包含如form,link,anchor,image等页面元素的集合,不过我觉得这样来访问他们不是特别方便。
document属性拥有以下几个方法:
write()和writeln(),后者比前者要多输出一个换行,可以通过其向调用处写入文本或者引入js文件,具体用法和注意事项用到时自己百度~
open(),close()方法,不赘述,直接代码:
var oNew=window.open(“about:blank”,”newwindow”,”height=150,width=300,top=10,left=10,resizable=yes”);
oNew.document.open();
oNew.document.write(“<html><head><title>This is a test</title></head><body><h1>This is a Test.</h1></body></html>”);
oNew.document.close();//写入完毕,关闭以显示结果
当我们需要打开一个不需要向服务器返回的页面时比较实用。
i.location
location包含多种属性,一般多与URL的解析相关,在此不一一列举了,常用的有href属性
location.href=”http://www.baidu.com/”;//当然该属性可读,表示该页面的URL
与上述操作效果类似的可以采用方法的调用:
location.assign(“http://www.baidu.com/”);
location.replace(“http://www.baidu.com/”);//二者区别在于,后者删除了当前页面在历史中的记录
重载当前页面
location.reload();//当其参数为空或false时表示从缓存中重载,为true时在服务器重载。
j.navigator对象
利用该对象判断当前页面采用的什么浏览器窗口,具体的属性和方法以及使用技巧到时百度吧~
k.screen
用screen对象可以获取关于用户屏幕的基本信息。
availHeight 窗口可以使用的屏幕高度(像素)
availWidth 窗口可以使用的屏幕宽度(像素)
height 屏幕高度(像素)
width 屏幕宽度(像素)
example:
window.moveTo(0,0);
window.resizeTo(screen.avaiWidth,screen.availHeight);
//以上用于确定新窗口的大小,还是比较有用的。