您的位置:首页 > Web前端 > JavaScript

javascript oop深入学习笔记(一)

2016-08-15 15:35 375 查看
一、定义和实例化一个类:

  在OOP的思想中,类是一个很重要的元素,一个类表示了具有相似的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,我们也可以称之为对象。

  在javascript中,我们定义一个函数,也可以看着是类,

function class(){
code;//类成员的定义以及构造函数
}


  上面class我们可以将他看着为类的构造函数,来实现初始化工作。

  JS中暂时没有CLASS这个类的关键字,所以我们暂时使用function来实现类的定义.

  类在定义好之后,如果没有定义静态方法时,我们是不能直接使用的,我们需要先实例化一个类,当然,JS也不例外的使用NEW这个关键字来实现对类的实例化。

接上面的代码
var obj = new class();


  我们可以这么简单的理解,在javascript中,现阶段函数和类是就是一个概念,当对一个函数进行nwe操作是,就返回一个对象,如果函数中没有初始化类成员,就会返回一个空对象。当 new一个函数是,这个函数就锁有代表类的构造函数,其中的代码被看做初始化了一个对象。用于表示类的函数我们也称之为构造器。

二、引用对象的属性和方法

  在JAVASCRIPT中,每个对象可以看做是多个属性(方法)的集合,引用一个属性(方法)一般采用 对象名.属性(方法)名 对象名["属性(方法)名"]

  例如:

var arr = new Array();    //定义一个数组
arr.push('xiaozu');    //为数组增加一个元素
arr["push"]("zhangsn");  //使用[]引用对象的属性和方法

var $length = arr.length;    //获取数组长度
var $len = arr["length"];    //获取数组长度

document.write($length+"<br>");
document.write($len);


san

三、动态添加、修改、删除对象的属性和方法

  上一节,我们已经了解如何引用一个对象的属性和方法,现在我们来了解如何为一个对象添加、修改或则删除属性和方法。Javascript提供了灵活的机制来修改对象行为,可以动态添加、修改、删除属性和方法

  例如,我们先用类Object来创建一个空对象user:

  添加属性和方法:

var user = new Object();                    //创建一个空对象user

user.name = 'xiaozu';                        //添加属性
user.age = '18';
user.sex = 'male';

document.write(user.name+"<br />");    //输出这三个语句
document.write(user.age+"<br />");
document.write(user.sex+"<br />");

user.getName =function(){                   //添加一个方法
document.write("My name is:"+this.name+"<br/>");
}

user.getName();                                 //调用这个方法


  修改属性和方法:

  修改一个属性和方法的过程就是用新的属性替换旧的属性

  删除属性和方法:

  删除一个属性和方法就是讲其设置为undefined:

user.name = undefined;
user.alert = undefined;


  也可以使用 delete user.name 来删除一个属性

四、 创建无类型对象

  JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上的类的概念。它提供了一众简单的方式来创建对象,通过使用大括号括住多个属性或方法及其定义,这些属性或方法用逗号隔开,用以实现对象的定义。这段代码就直接定义了具有N个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。

<script>
var $obj = {};          //定义个空对象
var $user={
$name:"xiaozu",     //定义了name属性,初始化为xiaozu
$sex:"male",        //定义了sex属性,初始化为male
hello:function(){    //定义hello方法
document.write("hello,"+this.$name);
}
}
$user.hello();
</script>


五、prototype原型对象,是实现面向对象的一个重要机制,每个函数(function)其实也是一个对象,他们对应的类是“Function”,每个函数对象都具有一个子对象prototype。即prototype表示该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。  

function $class1(){
//empty
}
$class1.prototype.method=function(){    //对类的prototype对象进行修改,增加method方法
alert("it is a test method");
}
var $obj1 = new $class1();             //创建类$class1的实例
$obj1.method();                        //调用$ogj1的方法method
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: