码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript的面向对象基础

时间:2014-08-03 17:46:55      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   使用   io   数据   问题   

今天学习了一些关于javascript面向对象的基础,之前在网上也陆续接触过一些,不过都感觉理解的不够透彻,所以今天做一个小结。

首先javascript的面向对象还要从何为对象说起,所谓对象可以看作是一个黑盒子,你并不清除它内部实现功能的原理,但是你只要了解它是如何使用的,并且能够用它自带的功能完成自己想要做的事情,基本上来说这就是面向对象的思想。其实面向对象的思想生活中随处可见,电视机,电冰箱,空调等等,都可以看作是对象,拿一般人来说,无需知道它们的工作原理,但只要按说明书去使用即可。

回归到javascript来说的话,在实际写代码的过程中,其实都已接触到面向对象,只不过很多时候是在使用上,使用一些预设的功能,比如用Date()创建日期对象再用其预设的方法getDate(),getFullYear()等可以实现调用时间日期等功能,Array()创建数组对象再用其预设的方法push(),pop(),shift(),splice()等可以实现数据存取等功能。而从使用面向对象,到自己编写面向对象,是学习javascript必经的过程。

 

自己编写面向对象的话,还要从一些小知识点细细去说。

Step1:

变量---属性  

函数---方法

对于初学javascript的童鞋来说,声明变量/函数是家常便饭,但是可能对属性/方法的概念就比较模糊了。以下的代码可以加以说明:

/*变量与函数*/
var a = 1;    //声明一个变量并赋值为1
function b()  //声明一个函数b,它的功能为弹出变量a
{
  alert(a);
}
b();       //执行函数b

/*属性与方法*/
var obj = new Object();  //新建一个名为obj的空对象
obj.a = 1;          //给obj对象添加a属性并赋值为1
obj.b = function()    //给obj对象添加b方法,它的功能为弹出obj对象的属性a
{
  alert(obj.a); 
}
obj.b();          //执行obj对象的方法b

 

以上两段代码的执行结果都是一样,都是弹出1,只不过前者是以变量/函数实现,后者是属性/方法,其实说白了,变量之于属性,函数之于方法,是一个东西,只不过变量/函数是自由的,是不属于任何人的,而属性/方法是属于obj对象的。

PS:1.如果较真的话,其实变量/函数是若不是局部声明的话,默认为window对象的。2.系统自带的对象(如Array()对象等)也是可以添加属性与方法的,只不过这些对象已经有默认的属性与方法,若自行添加可能会覆盖原有的属性与方法,容易出问题,所以一般还是新建空白对象。

 

Step2:

this的指向

关于this的指向,说的再多不如一句话,不完全的说法:指代当前发生事件的对象,补充完全的说法:当前的方法属于谁那么就是指代谁。

一段代码说明如下:

var obj = new Object();
obj.a = 1;
obj.b = function()
{
  alert(this.a);
  console.log(this); 
}
obj.b();

可以看到这段与之前的属性与方法的代码大致一样,只不过将obj替换为this,执行结果一样,说明this指代的就是b方法的主人obj。

当然也可以在b方法中将this打印出来,结果其实就是obj对象。

 

Javascript的面向对象基础,布布扣,bubuko.com

Javascript的面向对象基础

标签:style   blog   color   java   使用   io   数据   问题   

原文地址:http://www.cnblogs.com/anson0415/p/3888487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!