两种简单的JavaScript中定义对象的方式:

在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性。

 var object=new object();
//alert(object.username);
object["username"]="zhangsan";
alert(object.username);
delete object.username; //username已经从object对象中删除
alert(object.username);

在JavaScript中定义对象最常用的方式:

 var object ={username:"zhangsan",password:123};

JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象):
1) 基于已有对象扩充其属性和方法:

 var object = new Object();

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

2)工厂方式:

为了使的一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数对象,应该讲对象的成员函数定义在createObject(username, password)之外来调用,而不是将函数放在工厂方法之内。

 //使用工厂方法创建对象
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 object = createObject("zhangsan", "123");
var object2 = createObject("lisi", "456"); object.get();
object2.get();

3) 构造函数方式:

 function Person()
{
//在执行第一行代码前,js引擎会为我们生成一个对象
this.username = "zhangsan";
this.password = "123"; this.getInfo = function()
{
alert(this.username + ", " + this.password);
} //此处有一个隐藏的return语句,用于将之前生成的对象返回
} var person = new Person();
person.getInfo();

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

 function Person(username, password)
{
this.username = username;
this.password = password; this.getInfo = function()
{
alert(this.username + ", " + this.password);
}
} var person = new Person("zhangsan", "123");
person.getInfo();

4)原型(“prototype”)方式:

单纯的使用原型方式来创建对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反应到其他对象当中。同时,对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。

 function Person()
{ } Person.prototype.username = new Array();
Person.prototype.password = "123"; Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
} var person = new Person();
var person2 = new Person(); person.username.push("zhangsan");
person.username.push("lisi");
person.password = "456"; person.getInfo();
person2.getInfo();

使用原型+构造函数方式来定义对象则可以解决这些问题:

 //使用原型+构造函数方式来定义对象

 function Person()
{
this.username = new Array();
this.password = "123";
} Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
} var p = new Person();
var p2 = new Person(); p.username.push("zhangsan");
p2.username.push("lisi"); p.getInfo();
p2.getInfo();

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

 function Person()
{
this.username = "zhangsan";
this.password = "123"; if(typeof Person.flag == "undefined")
{
alert("invoked"); Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
} Person.flag = true;
}
} var p = new Person();
var p2 = new Person();

JavaScript之Object的更多相关文章

  1. 从头开始学JavaScript (十一)——Object类型

    原文:从头开始学JavaScript (十一)--Object类型 一.object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值). object对于在应 ...

  2. JavaScript中Object的总结

    基于原型继承,动态对象扩展,闭包,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一. 这里有一个很重要的概念需要特别指出:在JavaScript中,包括所有的函数,数组,键值对和 ...

  3. JavaScript之Object拆解

    转载烦请注明原文链接: https://github.com/Xing-Chuan/blog/blob/master/JavaScript/JavaScript%E4%B9%8BObject%E6%8 ...

  4. JavaScript Math Object 数字

    JavaScript Math Object Math Object The Math object allows you to perform mathematical tasks. Math is ...

  5. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...

  6. 【WIP】客户端JavaScript Web Object

    创建: 2017/10/11   更新: 2017/10/14 标题加上[WIP],增加[TODO] 更新: 2018/01/22 更改标题 [客户端JavaScript Web Object, UR ...

  7. JavaScript中object和Object有什么区别

    JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 ————————————————————— ...

  8. javascript nested object merge

    javascript nested object merge deep copy Object reference type function namespace(oNamespace, sPacka ...

  9. Javascript判断object还是list/array的类型(包含javascript的数据类型研究)

    前提:先研究javascript中的变量有几种,参考: http://www.w3school.com.cn/js/js_datatypes.asp http://glzaction.iteye.co ...

  10. javascript的 Object 和 Function

    一. javascript 的 内置对象: Object 和 Function javascript所有东西,包括 Function 都是对象 . Array  其实是一个 Function 类型的对 ...

随机推荐

  1. 10.cadence.自定义焊盘的创建[原创]

    一.自定义图形焊盘 1.设置环境(面板大小,格点) --- ------ 圆形 Shape > Circular ---- 两个DRC错误,证明图形重合了, 将图形复合一下: --- 椭圆类焊盘 ...

  2. 事务&视图和索引

    一:事务 1.含义:事务是一个不可分割的整体,事务中的多个执行过程,同生共死.要么都执行成功,要么都执行失败. 事务必须具备以下四个属性,(简称:ACID): ①.原子性(Atomicity):事务的 ...

  3. HDU 1907 (博弈) John

    参见上一篇博客,里面有分析和结论. #include <cstdio> int main() { int T; scanf("%d", &T); while(T ...

  4. (六) 语言模型 Language Madel 与 word2vec

    语言模型简介(Language Model) 简单的说,语言模型 (Language Model) 是用来计算一个句子出现概率的模型,假设句子  ,其中  代表句子中的第  个词语,则语句 W 以该顺 ...

  5. 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN

    数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...

  6. php延迟加载的示例

    class a{ ; ; //public $d = 5; public function aa(){ echo self::$b; } public function cc(){ echo stat ...

  7. Heritrix源码分析(十五) 各种问题总结(转)

    开博客以及建立Heritrix 群有一段时间了(这里谢谢大家的关注),这篇博客将整理这段时间所遇到的问题.同时由于自己从今年5月份开始就不怎么接触Heritrix,很多东西开始遗忘(不过里面思想没忘) ...

  8. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  9. suse linux环境变量设置

    以在suse上安装jdk1.5为例说明: 安装jdk1.5完毕后,就可以配置环境变量了. su  root XXXXXX // 键入管理员密码 对于suse来说,只需在/etc/profile 文件后 ...

  10. getHibernateTemplate() 一直报NullPointerException 错误

    原来是调用方法有误正确调用方法: ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContex ...