《悟透javascript》学习笔记:六、放下对象
引言
再来看看function与object的超然结合吧。
在面向对象的编程世界里,数据与代码的有机结合就构成了对象的概念。自从有了对象,编程世界就被划分成两部分,一个是对象内的世界,一个是对象外的世界。对象天生具有自私的一面,外面的世界未经允许是不可访问对象内部的。对象也有大方的一面,它对外提供属性和方法,也为他人服务。不过,在这里我们要谈到一个有趣的问题,就是“对象的自我意识”。
理解this
JavaScript中也有this,但这个this却与C++、C#或Java等语言的this不同。一般编程语言的this 就是对象自己,而 JavaScript 的 this 却并不一定!this 可能是我,也可能是你,可能是他,反正是我中有你,你中有我,这就不能用原来的那个“自我”来理解 JavaScript这个this的含义了。为此,我们必须首先放下原来对象的那个“自我”。
<script language="javascript">
function WhoAmI(){
//此时是 this 当前这段代码的全局对象,在浏览器中就是window 对象,其name属性为空字符串。输出:I'm of object
alert("i'm " + this.name + " of " + typeof(this));
alert("url is " + this.location); //证明此时的this是window对象
}
WhoAmI(); //执行
var Bill = {name:"BillGates"}; //创建一个对象
Bill.WhoAmI = WhoAmI; //为Bill增加一个WhoAmI的方法,并赋为上面的方法
Bill.WhoAmI(); //执行, 此时this是Bill
WhoAmI.call(Bill); //执行, 此时this是Bill
({name:"noName", WhoAmI:WhoAmI}).WhoAmI();
</script>
在JavaScript函数中,你只能把this看成当前要服务的“这个”对象。this是一个特殊的内置参数,根据this参数,您可以访问到“这个”对象的属性和方法,但却不能给this参数赋值。在一般对象语言中,方法体代码中的this可以省略的,成员默认都首先是“自己”的。但JavaScript却不同,由于不存在“自我”,当访问“这个”对象时,this不可省略!(这段话很抽象)
上面演示了多种this的传递方法,JavaScript提供了传递this参
相关文档:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>FLYSO Blog-- JS代码实现的自动分页效果~!</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT=""& ......
在Javascript中没有class类,但是同样也可以进行对象的创建。在面向对象的语言中需要实例化某个具体类的实例,在Javascript中则不用。
在Javascript里,对像可以创建新的对象,也可以继承自其他对象。这个概念称为原型化继承(prototypal inheritance)。
任何函数在Javascript 中都可以被实例化一个对象。
程序如下:
// ......
实现卡页式web的js:
function ShowContent(id,num){
for(i=1;i<=num;i++){
document.getElementById("page_"+i).className="";
document.getElementById("content_"+i).style.display="none";
}
document.getElementById("content_"+id).style.display="block";
......
数组是我从学习编程以来打交道最多的一种数据类型,其实说白了,数组无非就是key value对。还记得刚参加工作那会,一个php的foreach循环就差点搞得我吐血,现在回头想想,当时自己真够笨的。
数组(array)是一种数据类型,它包含或者存储了编码的值,每个编码的值称作该数组的一个元素(element),每个元素的编码被称作下 ......
response.write "<script language='javascript'>"
response.write "alert('用户名或密码错误!');"
response.write "hist ......