对象 - 介绍 ¶
作者:KK
发表日期:2016.2.19
在程序里经常要操作对象,不单止JS语言,几乎其它编程流行的语言都是要操作对象的
对象是什么呢...我喜欢用现实来打比方,我们买票,就要找售票员,给钱她,她给票来,那么售票员就是我们的对象,我们也是她的对象(售票对象)
很多事情并不是你自己一个人能做出来的,需要别人来协助处理,协助你处理这件事的这个人就是对象了(警察/保安是我们的安全对象,猫狗是我们的宠物对象,汽车是我们的交通工具对象...)
在程序世界里做很多事情也不是自己这块代码能做出来的,需要拜托其它程序对象来帮我们实现,所以要用到对象
比如我们想要知道浏览器窗口目前的大小是多少像素,需要通过window
对象来帮我们获取这个窗口大小,看代码:
alert('当前窗口宽度是' + window.innerWidth + '像素');
alert('当前窗口高度是' + window.innerHeight + '像素');
以上代码通过访问window.innerWidth
和window.innerHeight
取得了浏览器窗口的宽高度像素,你可以试着将浏览器窗口缩小一下再执行代码,它显示的数值也会跟着变呢
window
是一个对象,它代表了浏览器网页窗口,这个对象在网页加载时,JS引擎就已经帮你放在内存里了,你随时随地在任何代码位置都可以访问这个对象
属性 ¶
而window后面加一个.
号,.
号后面再书写的innerWidth
就是这个对象的属性,一般情况下对象都会有属性,还有另一种东西叫方法
(下面再说)
innerWidth是window对象的宽度属性,也就是窗口的宽度,单位是像素,而innerHeight则是高度属性
另外其实window对象还有很多很多我都数不清的属性,这个你以后再慢慢了解,反正常用的不会很多
方法 ¶
对象一般有属性也有方法,方法可以理解成一种命令,严格地说方法其实本质上是一种函数,方法是可以用来做事情的,而属性是不能做事情的
你执行var aa = window.innerWidth;
这个语句,将属性值赋值给一个变量,则程序的引擎在运行时只会取出窗口的宽度值传给变量aa,然后就不会有其它事情发生了
但是方法不同,方法主要是用来被调用的(和函数一样,也是定义好函数后等待人家调用的),一旦调用方法就会发生一些事情,对象会有很多个方法,每个方法都有不同的名称,如果是你自己设计的对象,方法名也可以你自己来设计(起名规则和函数一样)
比如window对象有个stop
方法,那么要调用方法就需要这么写:window.stop()
,和访问属性一样,也是在对象后面加一个.
号,再写方法名称,但不同的是方法名称后面要加一对括号()
其实和调用函数是一样的,方法也可以有参数,要将参数传给方法就是window.test(111)
这样将参数传进去
window对象也有数不清的方法,我这里只举例两个方法
open方法 ¶
这个方法可以打开一个新的浏览器窗口并加载一个指定的网址
window.open('http://www.kkh86.com/it/index.html');
stop方法 ¶
这个方法可以禁止浏览器渲染网页
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>方法测试</title> </head> <body> <p>第1行内容</p> <script type="text/javascript"> window.stop(); //上面显示了第1行内容,但在这里嵌入了一个脚本标签并执行了 window的stop 方法,会导致浏览器终止内容的渲染,下面第2行内容不会出现 //除非你取消stop方法的执行 </script> <p>第2行内容</p> </body> </html>
方法与函数 ¶
方法与函数看上去是一样的,都是被调用,都可以传递参数,没错,你可以理解为一模一样的
但是它们还是两种概念来的,函数不属于任何对象,但方法是有对象依归的
比如location.reload()
这个代码执行了location对象的reload方法,导致网页重新加载(通常讲的刷新),那么这个reload方法是属于location对象的
然而如果只是reload()
这样,这个reload并不是方法执行,而是一个函数执行,但是通常有一部分程序员并不严谨地看待这些概念,都统一叫做函数
比如对着window.stop()
这个代码说"执行了window的stop函数",但实际上做了5年以上的程序员一般都不再这么模糊地全部叫做函数,不然你会显得很不专业,这么多经验了还搞不懂谁是方法谁是函数么?
咱们从小就要养成好习惯,最简单,有点号调用的就是方法,没点号的就是函数,不然没准哪个面试官会觉得你都没学好理论概念给扣印象分了
最后还要告诉你,对象也是一种变量类型,alert(typeof(window))
就会提示object,对象的变量类型英文名称是object