JS面向对象

使用面向对象时,只关注对象提供的功能,不关注其内部细节

面向对象编程的特点:抽象、封装(不考虑内部实现 ,只考虑功能使用)、继承(从已有对象上,继承出新的对象)

对象的组成:

  方法-----函数:过程、动态的

  属性-----变量:状态、静态的

为对象添加方法和属性

this详解,事件处理中this的本质

  window

  this----函数属于谁

不能在系统对象中随意附加方法、属性,否则会覆盖已有方法、属性,所以引入object对象

object对象

任何函数前面都能加new,函数里面的this指向对象,不再指向window

调用函数前面如果加new,偷偷创建对象,偷偷返回

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
</body>
</html>
<script>

//类:模型(不具备实际功能),对象:产品


var arr1=new Array(12,34,1,1);
var arr2=new Array(12,1,1,1);

Array.prototype.sum=function() //原型是给类加东西,class
//arr1.sum=function() //给对象加东西,行间样式
{
var result=0;

for(var i=0;i<this.length;i++)
{
result+=this[i];
}
return result;
};
alert(arr1.sum());
alert(arr2.sum());
</script>
<script>
function createPerson(name,qq) <!--构造函数只需要写属性和方法,调用时先new一个对象,再调用该对象的方法-->
{
this.name=name;
this.qq=qq;

this.showName=function()
{
alert('我的名字是:'+this.name);
}
this.showQQ=function()
{
alert('我的QQ号是:'+this.qq);
}
}
var obj=new createPerson('张三','1567815');
//obj.showName();
//obj.showQQ();
</script>
<script>

<!--混合的构造函数/原型方式-->


function CreatePerson(name,qq) //用构造函数加属性
{
this.name=name;
this.qq=qq;
}
CreatePerson.prototype.showName=function() //用原型加方法
{
alert('我的名字是:'+this.name);
}
CreatePerson.prototype.showQQ=function()
{
alert('我的QQ号是:'+this.qq);
}

var obj=new CreatePerson('张三','1567815');
obj.showName();
obj.showQQ();
</script>

 

posted @ 2013-08-02 14:06  菜蛋  阅读(162)  评论(0编辑  收藏  举报