转载自:http://blog.sina.com.cn/s/blog_75a8cfac0100pif0.html

javascript定义对象写法

javascript定义对象的几种简单方法

1.构造函数方式,全部属性及对象的方法都放在构造方法里面定义

优点:动态的传递参数

缺点:每创建一个对象就会创建相同的方法函数对象,占用大量内存

function User1(name, password) {
this.name = name;
this.password = password;
this.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
}else {
return false;
}
};
}

2.原型方式,将对象属性及方法定义都写在对象的prototype里面

优点:每次创建对象时都是使用相同prototype中的方法,不会占用重复的内存

缺点:无法动态传递构造参数

function User2() {

}
User2.prototype.name = "prototype name";
User2.prototype.password = "prototype password";
User2.prototype.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};
原型方式的另一种写法:
格式:
var 对象名 = {};
    对象名.prototype.变量1=变量1的值;
    对象名.prototype.变量2=变量2的值;
    ……;
    对象名.prototype.函数1= function() {
       函数体
    };
    对象名.prototype.函数2= function() {
       函数体
    };
    ……;
说明:
(1)       初始对象体内可以不定义任何东西;
(2)       在要定义的变量前加“对象名.prototype.”的格式;
(3)       对象的内容与值以等号分隔,成对出现;
(4)       包含的变量或者函数之间以分号分隔,也可以省去分号。
(5)       函数需要写在function(){}的大括号之内。
例子:
var data = {};
   data.prototype. name ="Vicky”;
    data.prototype. age =20;
    data.prototype. eat = function() {
       alert(‘I wanna eat meat’);
    };
    data.prototype. sleep= function() {
       alert(‘I wanna sleep’); };

3.构造及原型混合方式,将属性定义写在构造方式里面,方法写在prototype里面

优点:综合了construct及prototype方式的优点,可以动态传递构造参数,并且方法函数对象也只创建一个

缺点:函数写在对象外面,不太符合面向对象的思想

function User3(name,password) {
this.name = name;
this.password = password;
}
User3.prototype.login = function(name,password) {
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};

4.动态原型方式:加一个判断属性,来判断该对象是否已经被创建过,如果被创建过,则方法就不在构建

优点:将原型函数写在对象定义里面

缺点:不支持继承

function User4(name,password) {
this.name = name;
this.password = password;
if(typeof User4.__initialized == "undefined") {
User4.prototype.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};
User4.__initialized = true;
}
}

5、JSON方式/对象直接量

格式:
var 对象名 = {
             变量1: 变量1的值,
             变量1: 变量1的值,
             ……,
            函数1: function() {
                函数体
            },
            函数2: function() {
                函数体
            }//Note:最后的逗号要去除为了和IE兼容。
};
说明:
(1)       大括号内直接填写变量或者函数;
(2)       对象的内容与值以冒号分隔,成对出现;
(3)       包含的变量或者函数之间以逗号分隔;
(4)       函数需要写在function(){}的大括号之内。
例子:
var  对象名 = {
       name:    “Vicky”,
       age:     26,
       eat: function() {
              alert(‘I wanna  eat meat’);
       },
       sleep: function() {
              alert(‘I wanna sleep’);
        }
};
注释:类似的方式也叫做匿名类
匿名类举例:    
{
    index: '//',
    reg: new RegExp('^//.*$'),
    css: "comment"
}
上面的方式创建了类,只是没赋给一个变量而已。

6、create方式

该方式利用了Prototype JavaScript组件库。
格式:
       var 对象名 = Class.create();
       Object.extend(对象名.prototype, {
            变量1: 变量1的值,
            变量1: 变量1的值,
             ……,
            函数1: function() {
                     函数体
                },
            函数2: function() {
                     函数体
            },
……
});
说明:
(1)       对象的创建使用了Prototype库中的Class.create()函数;
(2)       对象的内容使用Prototype库中的Object.extend()函数来扩展;
(3)       被扩展的对象在传入Object.extend函数时一定要带上prototype,
(4)       扩展内容被大括号包含,其内与JSON方式的定义格式完全相同。
例子:
       var data = Class.create();
       Object.extend(dta.prototype, {
       name: "Vicky",
       age: 20,
       eat: function() {
              alert(‘I wanna eat meat’);
       },
       sleep: function() {
              alert(‘I wanna sleep’);
       }
       });

其实,JS对象的定义还有其它的方式,你也可以用上面几种进行组合定义,这显出了JS作为动态语言的自由性。
JS对象的创建正规方法如下:
var d1 = new Da

ta();
       JS对象变量的引用方式有两种:
(1)       点号方式引用,如,data.name。
(2)       数组方式引用,如,data[‘name’]

javascript对象定义的更多相关文章

  1. javascript对象定义及创建

    javascript对象 定义 javascript中的对象,可以理解成是一个键值对的集合,键是调用每个值的名称,值可以是基本变量,还可以是函数和对象. 创建方法 第一种方法 通过顶级Object类来 ...

  2. javascript对象定义和操作

    //js对象定义有三种方式//js方法定义有三种方式 function fn(){} var fun = function(){} var fun = new function() {} //**** ...

  3. javascript 对象和数组(花括号、方括号)

    1. javascript对象定义 var a = {var a = "test", var b = "test"} 2. javascript数组定义 var ...

  4. JavaScript对象分类

    JavaScript 中的对象分类 我们可以把对象分成几类. 宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定. 内置对象(Built- ...

  5. JavaScript中定义对象的四种方式

    最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂 ...

  6. javaScript对象-基本包装类型的详解

    本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...

  7. 如何理解javaScript对象?

    在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...

  8. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  9. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

随机推荐

  1. javascript快速入门7--ECMAScript语法基础

    ECMAScript的基础概念 熟悉Java.C和Perl这些语言的开发者会发现ECMAScript的语法很容易掌握,因为它借用了这些语言的语法.Java和ECMAScript有一些关键语法特性相同, ...

  2. Yii2系列教程三:Database And Gii

    上一篇文章我们理了一下Yii2的MVC,Forms和Layouts,这篇文章就直接按照约定来说说Yii2与数据库相关的一些事情,如果你觉得不够的话,不急,更具体的用法我会在后续的教程给出,并且这里也会 ...

  3. docker集群——搭建Mesos+Zookeeper+Marathon的Docker管理平台

    服务器架构 机器信息: 这里部属的机器为3个Master控制节点,3个slave运行节点,其中: zookeeper.Mesos-master.marathon运行在Master端:Mesos-sla ...

  4. 【微信转载】Google是如何做测试的

    就 目前的软件公司而言,Google无疑是在开放和创新力方面做得最好的.而如何支撑Google这种快速地扩张的研发能力以及迭代速度,并且产品质量总是 一如以往的能给人们很棒的用户体验?这是一个值得我们 ...

  5. POJO百度百科

    POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和EJB混淆起来, ...

  6. CSS--百度百科

    层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设 ...

  7. java类反射

    http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html

  8. Rational Rose2007具体安装步骤

    学习了UML.那么Rational rose绘图软件当然就是不可缺少的了. 我的电脑是win7 64位的系统.以下的链接是安装软件以及破解方法.该软件是BIN格式的.也就是镜像文件.须要安装一个虚拟驱 ...

  9. URAL 1750 Pakhom and the Gully 计算几何+floyd

    题目链接:点击打开链接 gg.. . #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cs ...

  10. Flex colorTranfrom使用说明

    这次使用colorTranfrom主要用来将一个已有的过渡颜色映射到其他颜色条.发现这个colorTranfrom很好使用,于是简单研究了下 文档有说明: 使用 ColorTransform 类调整显 ...