js面向对象的基础懂得
一,在进行javascript的练习过程中,我们会一直重复修改代码,不断强化思想,训练自己的思维能力。从最初的for循环修改成foreach,再到调用函数,这都是在用面向过程的思想在编程,现在我们又要学习将面向过程编程改成面向对象编程,所以我们来学习一下面向对象编程的一些基础知识,好好理解,然后学会应用。
二,面向对象基础:
1.类和对象
在之前学习的JavaScript基础里面,我们初步了解了 对象 的概念. JavaScript中的对象是一个名称与值配对的集合.这种名称与值的配对被称为属性.如此看来,JavaScript对象可以定义为属性的集合.
1>.对象的字面量表达式,通常称为JSON(JavaScript Object Notation)
对象 = { 属性名 : 属性值, 属性名 : 属性值, ┅ ┅ }
其中,属性名可以是标识符,字符串,或是数值.属性值可以是任意的数据值,对象或者函数.
具体例子如:
{ x: 2, y: 1 } //属性名是标示符,只有JSON里可以使用,等价于字符串 { "x": 2, "y": 1 } //属性名是字符串 { 'x': 2, 'y': 1 } //属性名是字符串 { 2: 1, 1: 2} //属性名是数值 { x: 2, status: true, info: { name: "Tom", age: 23, student: false} } //属性值包含对象 { x: 2, say_hello: function(){ console.log( "Hello!" ) } } //属性值包含函数 //像上面这种没有函数名的函数叫做"匿名函数"
2>.对象的new表达式
JavaScript中new表达式的作用是创建一个对象,我们一般称通过new表达式创建的对象为 实例 对象(简称实例).可以像下面这样使用该表达式.
var robot = new Object(); //生成一个实例对象robot robot.name = "Cat"; //定义实例对象robot的name属性,并赋值 robot.age = 1; robot.info = {height: 120, weight: 40} robot.say_hello = function(){ console.log("Hello!") };
robot.say_hello是一个函数,这说明函数里面的内容是共享的,不会变,用的时候直接调用就可以。
对实例化的理解:
用new创建的对象,需要一个模板,就像工业铸造的模具一样。每new一次,便铸造了一个新的实例。 这个对象模板被称之为 类。这个new的过程叫做实例化。
是通过new表达式,由类生成对象的用法。
**注意:上面代码中,new 表达式后面的 Object就是类名和前面用字面量表达式生成一个对象一样,通过new表达式生成的实例对象也可以定我们需要的属性。两种对象,在使用方式上没有区别。由于一般情况下,通过字面量来定义生成一个对象更简单和直接,所以经常使用字面定义的方法来临时生成对象。
2.对象的函数
1>.方法调用(调用对象的函数属性)对象的函数属性有一种区别于一般函数的名称,叫做方法,相应的调用对象的函数属性时就叫做方法的调用。
下面我们来看定义在对象内部的函数的调用方法。
//通过字面量定义的对象 var robot = { x : 2, say_hello : function(){ console.log( "Hello!" ); } }; robot.say_hello(); //调用对象的方法
输出结果为:Hello!
然后通过new表达式生成的对象
var robot = new Object(); robot.say_hello = function(){ console.log( "Hello!" ); }; robot.say_hello(); //调用对象的方法
输出结果为:Hello!
从上面可以看出无论以何种方法生成的对象,其结果是一样的.
2>构造函数调用(相当于类的用法,用来生成对象)
在 对象的new表达式 内容的代码里:
var robot = new Object(); //生成一个对象robot
*注意:
a.这里的Object很明显是一个函数,类是一个抽象的概念,像是一个人的灵魂,当我们创建一个类之后,想要实例化,就必须要有一个具体的函数调用。那么这个具体的函数被称之为构造函数。
b.Object()是JavaScript内置对象Object的构造函数。 当然我们也可以定义自己类,自己的构造函数,并用来生成对象
三.好好理解上面的定义和例子,反复练习,学会应用。面向对象现在对于我们来讲门比较难,因为一直使用面向过程的思想来编程,要反复练习,学会面向对象编程。