javascript 对象

javascript处处是对象,对于写熟悉java c++后台语言的人实在不太习惯~

之前有写过一些简单的前台js动态效果代码,不过很少会涉及到对象的概念,基本上都是用函数编程,以及成熟的框架比如JQuery。当接触到nodejs时,发现这方面的还是需要了解一下;

1.首先,创建javascript的对象;

var now= new Date();
当然也可以使用字面量创建general object;

var  gvar={};

2. 删除对象

可以用delete关键字,也可以将值设置为null,来删除对象;

delete object;

3.对象引用

对象是一种引用类型,也就是说 var myname={cl:"ppp",age:"102"};

myname 是对象的一个索引,当你把它赋值到另一个var another=myname 时,another也指向 cl=ppp的内存空间;

而且对于对象的属性可以通过key-value的形式进行访问,很方便呢~~例如:

var another=myname[“cl”];//another= "ppp"
当然数组对象也可以作为函数的引用.例如:

myname[“cl”]=function(){};//定义
myname[“cl”]();//调用


全局对象也可以视为数组,比如,window["myObj"]();myObj 是定义的全局对象函数;

4.对象的比较

==与===为基本类型变量的比较,当用等号去比较对象时,仅仅安徽比较对象的引用;

5.构造函数

我们创建的任何函数都可以做为构造函数,例如:

function person(name,age){
    this.name=name;
    this.age=age;
}
var cl =new person("cl" ,102);
我们通常通过this关键字来标识这个对象的属性,我们也可以称对象person为类,在javascript当中没有完全的定义这些概念,而对于程序员的我们只能刻意的去模仿。在javascript中,每个对象是被包装过的,对于包装过的对象,它有个constructor属性,我们也可以通过它去创建对象 

var glf=cl.constructor("ooo",111);

this关键字表示引用当前对象,同时也可以用apply和call函数引用其他对象的方法并保持当前的作用域。

6.继承

谈到继承,就不能放过prototype了,在每个包装过的对象都含有一个prototype属性,通过prototype定义有的方法和属性可以成为对象的共有成员。有机会大家可以去探讨一下javascript的原型链。

在java里边谈到继承,私有成员在子类中是无法访问的。而在javascript中,并没有严格意义上的私有成员,通常采取在变量上加上两个下滑杠代表该成员的私有成员。有时候为了不让外界访问相关属性,可以采用闭包的形式。

在javascript程序员参考手册中提供了多种继承方式,在此介绍一种扩展类方法,它不要求调用父类的构造函数,而通过引用来访问父类源。

function extend(subClass,superClass){
  function inheritance(){};
  inheritance.prototype=superClass.prototype;
  subClass.prototype=new inheritance();//它继承了父类的共有成员
  subClass.prototype.construtor=subClass;//拥有属于自己的构造函数
  subClass.baseConstructor=superClass;//能够在子类中访问到父类的构造函数
  if(superClass._super_){
      superClass.prototype._super_=superClass._super_;//这个可以按照原型链依次上溯,将父类的成员_super_(父类的父类)添加到子类对父类持有的公有成员集合里
  }
  subClass._super_=superClass.prototype;//指向自己的父类
}





你可能感兴趣的:(JavaScript,对象)