16.javascript中定义对象的几种方式(javascript中没有类的概念,只有对象):

1)基于已有对象扩充其属性和方法:

var object = new Object();
object.name = "zhangsan";
object.sayName = function(name){
  this.name = name;
  alert(this.name);
}
object.sayName("lisi");

2)工厂方式:

//工厂方式创建对象
function createObject(){   var object = new Object();   object.username = "zhangsan";   object.password = "123";   object.get = function(){     alert(this.username + ", " + this.password);   }   return object;
} var object1 = createObject(); var object2 = createObject(); object1.get(); //带参数的构造方法 function createObject(username,password){   var object = new Object();   object.username = username;   object.password = password;   object.get = function(){     alert(this.username + ", " + this.password);   }   return object;
} var object1 = createObject("zhangsan","123"); object1.get(); //让一个函数被多个对象共享,而不是每一个对象拥有一个函数对象 function get(){   alert(this.username + ", " + this.password); } function createObject(username,password){   var object = new Object();   object.username = username;   object.password = password;   object.get = get;   return object;
} var object1 = createObject("zhangsan","123"); var object2 = createObject("lisi","456"); object1.get(); object2.get();

3)构造函数方式:

function Person(){

  //在执行第一行代码前,js引擎会为我们生成一个对象

  object.username = "zhangsan";

  object.password = "123";

  object.getInfo = function(){

    alert(this.username + ", " + this.password);

  }

  //此处有一个隐藏的return语句,用于将之前生成的对象返回

}

var person = new Person();

person.getInfo();

//可以在构造对象时传递参数

function Person(username,password){

  //在执行第一行代码前,js引擎会为我们生成一个对象

  object.username = username;

  object.password = password;

  object.getInfo = function(){

    alert(this.username + ", " + this.password);

  }

  //此处有一个隐藏的return语句,用于将之前生成的对象返回

}

var person = new Person("zhangsan","123");

person.getInfo();

4)原型 ("prototype")方式:

//使用原型 (prototype)方式创建对象

function Person(){

}

Person.prototype.username = "zhangsan";

Person.prototype.password= "123";

Person.prototype.getInfo = function(){

  alert(this.username + ", " + this.password);
} var person1 = new Person(); var person2 = new Person(); person1.username = "lisi"; person1.getInfo(); person2.getInfo(); //
function Person(){ } Person.prototype.username = new Array(); Person.prototype.password= "123"; Person.prototype.getInfo = function(){   alert(this.username + ", " + this.password); } var person1 = new Person(); var person2 = new Person(); person1.username.push("zhangsan"); person1.username.push("lisi"); person1.password= "456"; person1.getInfo(); person2.getInfo(); //使用原型 + 构造函数方式来定义对象 function Person(){   this.username = new Array();   this.password= "123"; } Person.prototype.getInfo = function(){   alert(this.username + ", " + this.password); } var person1 = new Person(); var person2 = new Person(); person1.username.push("zhangsan"); person2.username.push("lisi"); person1.getInfo(); person2.getInfo();

5)动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。

function Person(){ 

  this.username = new Array();

  this.password= "123";

  if(typeof Person.flag == "undefined"){

    alert("invoked");  

    Person.prototype.getInfo = function(){

      alert(this.username + ", " + this.password);

    }

    Person.flag = true;
  } } var person1 = new Person(); var person2 = new Person(); person1.getInfo(); person2.getInfo();

JS笔记2 --定义对象的更多相关文章

  1. js笔记19 事件对象

    1.常用的事件 onmouseover  onmouseout  onmousedown  onmousemove  onmouseup   onclick  onchange  onfocus  o ...

  2. js 笔记 数组(对象)

    一.javascript push 的元素为指针 var data = {"test":{"201308":"23","20130 ...

  3. js定义对象的几种容易犯的错误

    //js定义对象的几种容易犯的错误function Person() { getName = function (){ console.info(1); }; return this;}//Perso ...

  4. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  5. JS 学习笔记--11---内置对象(Global/Math)

    练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 1.内置对象的定义:有ECMAScript实现提供的.不依赖与宿主环境的对象,在ECMAScript运行之前就已 ...

  6. JavaScript学习12 JS中定义对象的几种方式【转】

    avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...

  7. js中定义对象的几种方式

    转载:http://blog.sina.com.cn/s/blog_60f632050100wz7h.html (1)基于已有对象的扩充方法:适用于临时构建对象,弊端:每次构建对象都要新建一个. va ...

  8. JS中定义对象和集合

    在js中定义对象: 方式一: var obj = {}; obj['a']=1; obj['b']=2; 方式二: var obj=new Object(); obj.a=1; obj.b=2; 在j ...

  9. JS笔记(二):对象

    (一) 对象 对象是JS的基本数据类型,类似于python的字典.然而对象不仅仅是键值对的映射,除了可以保持自有的属性,JS对象还可以从一个称为原型的对象继承属性,对象的方法通常是继承的属性.(这种对 ...

随机推荐

  1. python编译环境发掘——从IDLE到sublime到pycharm到Anaconda

    一个好的编译器对于我们处理日常的科研很关键,好的编译器无论是从界面,字体风格,提示,调试等各方面都能从用户角度出发,提供最好的使用体验.Python本身自带的IDLE或者在CMD里进行操作和调试,对于 ...

  2. 第一个嵌入汇编的C程序

    最近两天开始学习linux内核,看了赵炯博士的<linux内核完全注释>感觉受益匪浅.今天看到第三章 嵌入汇编部分,于是写了一个小程序试验了一下,用gcc编译通过.代码如下: #inclu ...

  3. 男人的网站—Indochino不完全解析 | 曾亮.ME

    男人的网站-Indochino不完全解析 | 曾亮.ME 亮兄 可以参考一下国内的 ROMWE SHEINSIDE

  4. redis合库

    玩家数据全部保存在redis,对合服来绝对是个坑.因为一直都是做开发,合库这事还是第一次操作. 首先,合服要做哪些事情,当然不同的游戏肯定不一样.合服的目的是为了增加同个服务器上活跃玩家的数量.合服有 ...

  5. SAP-MM:创建采购组织、采购组

    创建采购组织 路径:SPRO – IMG – 企业结构 – 定义 – 物料管理 – 维护采购组织   操作: Step 1.点击"新条目". Step 2.维护"采购组织 ...

  6. Tomcatserverhttps协议配置简单介绍

    一. 数字签名证书制作 1. 用jdk自带的keytool工具生成证书. 2. 导出证书: 3. 交给CA签名认证: 注意:制作具体步骤演示样例參见附录. 二.改动server.xml文件 改动con ...

  7. UML中的图

    用例图.类图.包图.顺序图.协作图.状态图.活动图.构件图.部署图等 1.用例图 显示多个外部参与者以及他们与系统提供的用例之间的连接.用例是系统中的一个可以描述参与者与系统之间交互作用功能单元.用例 ...

  8. python栈的实现(入栈,出栈)

    #coding=utf-8 class Stack(): def __init__(st,size):#栈的初始化 st.stack=[]; st.size=size; st.top=-1 def p ...

  9. 13个简单有用的android开发代码

    1:查看是否有存储卡插入 String status=Environment.getExternalStorageState(); if(status.equals(Enviroment.MEDIA_ ...

  10. request.getAttribute( "result");和request.setAttribute("result",username);

    request.setAttribute("result",username);在request对象中加入名为result的属性并附值为username,因为request对象是可 ...