什么是js面向对象,特点,怎么写构造函数

l面向对象编程(OOP)的特点
l抽象:抓住核心问题
l封装:不考虑内部实现,只考虑功能使用
l继承:从已有对象上,继承出新的对象
l多重继承
l多态
l对象的组成
l方法——函数:过程、动态的
l属性——变量:状态、静态的
举个例子
如果有个人,他叫周杰伦,性别是男,他还有一个变化的年龄,我们该怎么用面向对象的方式来表述呢? 第一、我们先给他起一个对象名叫zjl。 第二、我们给这个对象两个属性,一个属性叫name,它的值为"周杰伦",另一个属性叫gender,它的值为"male"。 第三、我们给这个对象一个方法,叫setAge,它可以给zjl这个对象设置年龄,它有一个形参age,用于接收代表实际年龄的实参。

注意这里面的this关键字,代表zjl这个对象,this.curage=age也就是把形参的值赋给zjl这个对象的curage属性,你当然也可以用同样的方法给属性name和gender赋值,赋值后name和gender的初始值就会被覆盖掉。现在想一想如果curage不加前面this.呢?还记得我们前面讲过的全局变量吗?没错,这样curage就不是对象zjl的属性,而是一个全局变量了,那如果我们写成varcurage呢,这是它只是setAge函数里面的一个局部变量,也不再是对象zjl的属性了。加了this关键字的方法和属性叫做公有方法和属性,不管在对象内部还是外部都可以访问。
在JavaScript中,任何合法的函数都可以作为对象的构造函数,这既包括系统内置函数,也包括用户自己定义的函数。一旦函数被作为构造函数执行,它内部的this属性将引用函数本身。

通常来说,构造函数没有返回值,它们只是初始化由this指针传递进来的对象,并且什么也不返回。如果一个函数有返回值,被返回的对象就成了new表达式的值。从形式上看,一个函数被作为构造函数还是普通函数执行的唯一区别,是否用new运算符。

用混合方式构造对象
    混合的的构造函数/原型方式
    Mixed Constructor Function/Prototype Method
原则
   构造函数:加属性
   原型:加方法
对象命名规范
   类名首字母大写
选项卡面向对象写法
      <script>
window.οnlοad=function ()
{
	new TabSwitch('div1');
};
 
function TabSwitch(id)
{
	var _this=this;
	var oDiv=document.getElementById(id);
	
	this.aBtn=oDiv.getElementsByTagName('input');
	this.aDiv=oDiv.getElementsByTagName('div');
	
	for(var i=0;i<this.aBtn.length;i++)
	{
		this.aBtn[i].index=i;
		this.aBtn[i].οnclick=function ()
		{
			_this.fnClick(this);
		};
	}
};
 
TabSwitch.prototype.fnClick=function (oBtn)
{
	//alert(this);
	for(var i=0;i<this.aBtn.length;i++)
	{
		this.aBtn[i].className=''
		this.aDiv[i].style.display='none';
	}
	oBtn.className='active';
	this.aDiv[oBtn.index].style.display='block';
}
</script>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值