Javascript 面向对象 对象(Object)

  javascript中的对象创建声明:

  var obj = {}; 或者 var obj = new Object(); 

  为对象加入属性,方法:

  //=====第一种写法====================================

  obj.name = '小明'; //为对象加属性

  obj.updateName = function(name){//为对象定义updateName方法

  this.name = name;

  }

  alert(obj.name);

  obj.updateName("小强"); //调用updateName修改obj对象的name属性值

  alert(obj['name']);

  第一次显示结果为:小明

  第二次显示结果为:小强

  //=====第二种写法====================================

  obj['name'] = '张三'; //为对象加属性

  obj['updateName'] = function(name){//为对象定义updateName方法

  obj['name'] =name;

  }; 

  alert(obj.name);

  obj.updateName('李四'); //调用updateName修改obj对象的name属性值

  alert(obj['name']);

  第一次显示结果为:张三

  第二次显示结果为:李四

  

复制代码 代码如下:

  //=====第三种写法====================================

  var obj = {

  name: '王五', //为对象加属性

  updateName: function(name){//为对象定义updateName方法

  this.name = name;   

  }

  };

  alert(obj .name);

  obj.updateName("赵六"); //调用updateName修改obj对象的name属性值

  alert(obj .name);

  第一次显示结果为:王五

  第二次显示结果为:赵六

  //=====分析=====================================

  第一种写法是最普通的对象写法,因为javascript是动态语言,与Java和.Net不同,

  在程序运行并创建对象后,还可以对该对象的内部结构进行修改,

  比如添加属性和方法(java和.net中的反射机制做不到这点)。

  (a): var obj = {} || new Object();

  (b):obj.name = "张三";

  (c):obj.updateName = function(name){ this.name = name};

  当程序执行(a) 后,便创建了一个空对象(不包含任何方法和属性)obj,

  当程序执行(b) 后,改变了obj的内部结构,加了一个属性name,

  当程序执行(c) 后,改变了obj的内部结构,加了一个方法updateName ,

  而这都是在运行的时候完成的动作

  第二种写法像数组,但绝不是数组,区分是不是数组可以如此判断:

  

复制代码 代码如下:

  if(typeof(obj.length) == "undefined") {

  alert("obj不是数组,数组都有length属性!");

  }else{

  alert("obj是数组!");

  }

  第二种写法更像一种数据结构:map ,如:obj[key] = value;

  key是字符串,value可以是任何类型,变量,对象,函数等。

  可以通过这种方式遍历对象内部结构:

  

复制代码 代码如下:

  for(var key in obj)

  {

  alert(key);

  var value = obj[key];

  alert(value);

  }

  通过alert可以显示出你所定义的内容。

  第三种写法一看就是map的内部结构了,一个对象,内部完全用key : value键值对方式表示

  JSON对象也是这种结构,只要对map或者JSON对象有所熟悉的就很容易理解了。