关于java script 面向对象编程

来源:互联网 发布:js confirm 返回值 编辑:程序博客网 时间:2024/05/15 22:46
  面向对象编程是一种思想。比如C语言是面向过程的,而升级版的c#则可以说是面向对象语言。在没有面向对象前,编码过程中会有很多的冗余代码。如果需要编译的部分很大很复杂,在这过程中出错几率会大大提高。在面向对象编程后,会让程序更加容易维护,代码的复用性更高。将具有共性的数据、函数放在一起处理,有利于问题的简单化。
  面向对象编程具有四个特点:抽象、封装、继承和多态。抽象便是抓住核心问题,忽略其他无关的地方。继承便是它是一种联结类的层次模型,允许并鼓励类的重用。具有多重继承和多态的特点。封装也是它的一个明显特征,是对象和类概念的主要特性。将语句和函数封装,不考虑内部的具体实现,只考虑功能的使用。在JS中最特征化的表现便是将不同作用域的变量进行复用。多态其实就是把做的内容和谁去做分开。因为js是动态语言,多态性本身就有。
  这种思想不仅可以应用于编程中,更可以在日常生活中应用到。所谓“万物皆对象”便是如此。
  Java Script可以说是一门面向对象的语言,因为它所有的东西几乎都是对象。但它同时也不是严格意义上的面向对象语言,因为它没有类,但它却有构造器可以做类能做的事,包括扮演变量和方法的容器和角色。他没有基于类的继承,但它有基于原型的继承。两个建立对象系统的方法是通过继承和通过聚合。由于它的独特性,我们可以说它是基于原型的面向对象语言。

Java Script中的对象包括方法和属性。

  首先我们来看下属性,属性在面向过程编程时就是变量。

var name = 'Zhang';
var email = 'youxiang@mail.com';
var sex = 'male';

  在面向对象编程时,就要将变量转变成属性。

var person = {
name : 'Zhang',
email : 'youxiang@mail.com',
sex : 'male'
}

  这样我们需要得到人这个对象的各种属性时,便可以这样获得:

person.name;
person.email;
person.sex;

  方法便是函数:

<script>
function aaa() //函数:自由
{
alert('abc');
}
var arr=[1,2,3,4];
arr.aaa=function () //方法:属于一个对象
{
alert('abc');
};
aaa();
arr.aaa();
</script>

new关键字创建对象

关键字new后面跟随一个函数调用,这个函数称为构造函数(constructor),javascript语言核心的原始类型都包含内置的构造函数。

var obj = new Object();//创建一个空对象,和{}一样
var arr = new Array();//创建一个空数组,和[]一样

工厂模式

由于Java Script中无法创建类,因此,开发人员发明了一种函数,用函数来封装以特定接口创建对象的细节:


var Person= (function(){
var Person= function(name,sex,age){
this.name= name;
this.sex= sex;
this.age= age;
};

  return function(name,sex,age){        return new Car(name,sex,age);    }})();

var Benz = new Car(“Zhang”,male,10);
var Audi = new Car(“Li”,female,5);

问题

没有new
函数重复定义
加上new

偷偷做了两件事

替你创建了一个空白对象
替你返回了这个对象

原型——prototype

原型是class,修改他可以影响的一类元素。可以砸已有对象中加入自己的属性和方法。可以修改对已有对象的影响。


var arr1=new Array(12,55,34,78,676);
var arr2=new Array(12,33, 1);

Array.prototype.sum=function () //class
//arr1.sum=function () //行间样式
{
var result=0;

for(var i=0;i

原创粉丝点击