javascript oop深入学习笔记(一)
2016-08-15 15:35
375 查看
一、定义和实例化一个类:
在OOP的思想中,类是一个很重要的元素,一个类表示了具有相似的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,我们也可以称之为对象。
在javascript中,我们定义一个函数,也可以看着是类,
上面class我们可以将他看着为类的构造函数,来实现初始化工作。
JS中暂时没有CLASS这个类的关键字,所以我们暂时使用function来实现类的定义.
类在定义好之后,如果没有定义静态方法时,我们是不能直接使用的,我们需要先实例化一个类,当然,JS也不例外的使用NEW这个关键字来实现对类的实例化。
我们可以这么简单的理解,在javascript中,现阶段函数和类是就是一个概念,当对一个函数进行nwe操作是,就返回一个对象,如果函数中没有初始化类成员,就会返回一个空对象。当 new一个函数是,这个函数就锁有代表类的构造函数,其中的代码被看做初始化了一个对象。用于表示类的函数我们也称之为构造器。
二、引用对象的属性和方法
在JAVASCRIPT中,每个对象可以看做是多个属性(方法)的集合,引用一个属性(方法)一般采用 对象名.属性(方法)名 或 对象名["属性(方法)名"]
例如:
san
三、动态添加、修改、删除对象的属性和方法
上一节,我们已经了解如何引用一个对象的属性和方法,现在我们来了解如何为一个对象添加、修改或则删除属性和方法。Javascript提供了灵活的机制来修改对象行为,可以动态添加、修改、删除属性和方法
例如,我们先用类Object来创建一个空对象user:
添加属性和方法:
修改属性和方法:
修改一个属性和方法的过程就是用新的属性替换旧的属性
删除属性和方法:
删除一个属性和方法就是讲其设置为undefined:
也可以使用 delete user.name 来删除一个属性
四、 创建无类型对象
JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上的类的概念。它提供了一众简单的方式来创建对象,通过使用大括号括住多个属性或方法及其定义,这些属性或方法用逗号隔开,用以实现对象的定义。这段代码就直接定义了具有N个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。
五、prototype原型对象,是实现面向对象的一个重要机制,每个函数(function)其实也是一个对象,他们对应的类是“Function”,每个函数对象都具有一个子对象prototype。即prototype表示该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
在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
相关文章推荐
- Modular Programming with JavaScript-Packt Publishing 2016(读书笔记)
- JavaScript强化教程——获取内容和属性
- js 实现 input 文件的内容显示
- JavaScript中遍历数组和对象的元素
- JavaScript强化教程——获取内容和属性
- JavaScript中的内置对象
- [原创]Json学习--litjson的生成和…
- JavaScript中removeChild 方法开发示例代码
- js外部文件问题
- js系列(10)js的运用(二)
- JS遍历对象
- JS----dataTables分页排序参数详解
- jsp路径
- safari浏览器下解决Date日期的NAN问题
- lufylegend.js教程(1)
- js 求点到直线的距离(由2点确定的直线,求到第三点的距离,交点坐标)
- JSON_笔记
- js数学函数
- 高德地图JavaScript根据后台坐标点绘制轨迹
- a标签中调用js的几种方法