面向对象是当代编程的主流思想。无论是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的数据有两种,简单数据和复杂数据。简单数据有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两个属性

本文固定链接: http://www.js-code.com/cpp/cpp_60274.html