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. 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题

    今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...

  2. AngularJS $on $broadcast $emit

    如何在作用域之间通信呢?    1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信.    2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的 ...

  3. Thrift初用小结

    thrift --gen  csharp  search.thrift thrift --gen java search.thrift Thrift是facebook的一个技术核心框架,07年四月开放 ...

  4. mybatis 与 ehcache 整合[转]

    1.简介 MyBatis 是支持普通SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC 代码和参数的手工设置以及结果集的检索. Ehcache 是现在最流行的纯 ...

  5. 妹子图太多怎么看才好,Swing来支招

    近期事少,翻开非常久曾经写的小程序,创意倒是尚可,代码写的却比較基础,非常多东西没有实现,略改了改形成了如今的模样,如今大家都忙着大数据,中间件,web开发,偶尔看看Java Swing的作品,也许能 ...

  6. Android(java)学习笔记234: 服务(service)之音乐播放器

    1.我们播放音乐,希望在后台长期运行,不希望因为内存不足等等原因,从而导致被gc回收,音乐播放终止,所以我们这里使用服务Service创建一个音乐播放器. 2.创建一个音乐播放器项目(使用服务) (1 ...

  7. SGU 199 - Beautiful People 最长上升子序列LIS

    要邀请n个人参加party,每个人有力量值strength Si和魅力值 beauty Bi,如果存在两人S i ≤ S j and B i ≥ B j 或者  S i ≥ S j and B i ≤ ...

  8. niop 2003 传染病控制 (哎呀我氧化钙 坑了好久的搜索题)

    /* 我觉得挺对的啊 实在是考虑不到有什么情况会判不了 70分 就这样吧 - - */ #include<iostream> #include<cstdio> #include ...

  9. Sql语句 不支持中文 国外数据库

    由于老美的不支持中文 SQL 语句第一:字段类型改为nvarchar,ntext 第二:强制转化 N update dbo.Role set rolename=N'普通用户' update dbo.T ...

  10. 解析JavaScript中apply和call以及bind

    函数调用方法 在谈论JavaScript中apply.call和bind这三兄弟之前,我想先说下,函数的调用方式有哪些: 作为函数 作为方法 作为构造函数 通过它们的call()和apply()方法间 ...