javascript 面向对象(一)

几个基本概念:
1、引用,其实就是我们平时所说的指针,指针是什么,就是地址,内存地址。如果我们把Javascript看做是一门面向对象的语言,则每一个对象都有一个引用指向。javascript就是通过控制引用来做到灵活性的。

2、作用域:javascirpt的作用域有2个要注意的地方,与我们平时不一样。


<script>
  var  count  = 0 ;
  
  //javascript 条件语句中 只要数字不为0 
  //或者NaN都返还true,这里12就有true的意思
  if(12){  
  	var count  =1;
  }
  
  alert(count);
  
</script>

运行代码 我们发现输出结果为1
我们从上面的代码看,也知道我们平时使用Java或者.net if块里面的作用域在外面是无法访问的。这是第一个不同的地方。

第二个不同的地方,看代码:

<script>
	function foo(){
	    var sum   = 1000;
		count = 0;
	}
	foo();
    //alert(sum); // 错误
    alert(count);  //输出0
</script>

如果我们在缺乏变量声明的时候,变量将会变成全局变量。
牢记,这2个基本概念。
我们在来看下javascript是怎么做到面向对象的:
类:面向对象语言中的基本组成,使用过Java或者.net应该都熟悉,class关键字!
而javascript中是怎么做到的呢,函数变形,为什么这么说呢,有个关键的地方this关键字!


<script>
	function Teacher(){
		this.name = "尊敬的张老师";  //怀念张老师
	}
	
	function Student(){
		name = "ttt";  
		this.study = function(){
			alert("我正在学习张老师的视频");
		}
	}
	
	var teac = new Teacher();
	alert(teac.name);  //输出尊敬的张老师
	var stu = new Student();  
	alert(stu.name);  //输出undefined
	stu.study();
</script>

这里我们可以将Teacher或者Student理解为类,类有属性和方法。也可以继承(下章再说)
当然我们也可以像使用java的方法一样,给类中的方法传递参数,参数也可以是对象,例如extjs组件构建的时候很多都是采用javascript对象字面量作为对象传递给方法。
使用函数来仿造类让javascript有面向对象的特性是一种手段,另外还有另一个方法,就是我上文说的对象字面量,结构有点类似json(www.josn.org)。这个方法与类不同的地方在于,他可以直接使用,有点类似Java里面的静态(static)方法。


<script>
	var person = {
		name:'花泽类',
		show:function(obj){
			alert(obj.name);
		}
	}
	var obj = {name:'道明寺'};
	person.show(obj);  //输出道明寺
	
	//提下命名空间
	var person1 = {};   //其实person1就是一个对象
	person1.util = {};   
	//然后我们给person1增加一个属性叫做util,而util是一个对象  
	//以此我们来做到命名空间,避免命名冲突
</script>

这里我们提到的都是一些简单的东西,我会在下次结合extjs,用oop的思想去封装一个extjs tree组件来讲实例。后面还有继承、原型以及闭包等概念。
大冬天,打字后冷啊。今天写到这里,欢迎矫正和批评。。。。

另写于个人blog:http://pgtimes.net/article/92


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值