javascript原型继承(第一篇)---对象

来源:互联网 发布:linux中mysql忘记密码 编辑:程序博客网 时间:2024/05/22 02:19

面向对象是当代编程的主流思想。无论是C++还是Java,都是面向对象的。严格意义上来讲,JavaScript并不是面向对象的, 但Javascript的灵活性足以让我们将其用作一门面向对象语言.

JavaScript是一种没有类的,面向对象的语言。它使用原型继承来代替类继承。

在学习原型继承前,我们来了解一下在javascript中对象的概念。可以先告诉大家,javascript的对象是不同于 Java, C++中对象的概念的。

学过java或者C++的人都知道,对象是什么、对象是怎样产生的。为了和javascript中的对象进行比较,还是举一个java下对象的例子

class person{string name;string birthday;public void sayhello{  System.out.println("hi,I am "+name+",I was born in "+birthday);}}person Amy=new person();

在java或C++里,对象是new一个class出来的,里面有字段,属性,方法.

但是在javascript中,对象里面的一切都是属性,只有属性,没有方法。那么方法如何表示呢?方法也是一种属性,表示为键值对的形式。

//通过字面量定义的对象var Amy = {                  name : "Amy",                  birthday : "1997年1月1日",                 say_hello   : function(){ console.log( "hi,I am "+name+",I was born in "+birthday); }            };

或者通过方法来创建一个对象:

function person() {                 name : "Amy",                  birthday : "1997年1月1日",                 say_hello   : function(){ console.log( "hi,I am "+name+",I was born in "+birthday); }        }        var Amy = new person();

可以看到,javascript中function(函数)的作用相当于java中class(类)的作用,那么在javascript中一句很重要的话就是,

对象都是通过函数创建的。

也可能有读者说,你上面不是用字面量定义了一个对象吗? 不过这真的是一种“快捷方式”,在编程语言中,一般叫做“语法糖”。

不得不提的是,在javascript中,对象是个很大的概念。在说明这个问题之前,我们得说明一下,javascript的数据有两种,简单数据和复杂数据。简单数据有undefined,null,boolean,number和string这五种。复杂数据只有一种,即对象(object)。

那么,在javascript中,数组是对象,函数也是对象。

比如,数组:

var mycars=new Array();//Array()是一个函数,对象都是由函数创建的mycars[0]="Saab"mycars[1]="Volvo"mycars[2]="BMW"

比如,函数:

var fn = function () {            alert(100);        };  fn.a = 10;  fn.b = function () {           alert(123);     }//函数就作为对象被赋值了a、b两个属性

下一篇: javascript原型继承(第二篇)—继承的设计思想

原创粉丝点击