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学习笔记(12)——JavaScript自定义对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. JavaScript自定义对象

    一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascrip ...

  3. JavaScript 自定义对象

    在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...

  4. JavaScript RegExp 对象(来自w3school)

    RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp 就是这种模式. 简单的 ...

  5. 在JavaScript 自定义对象来模拟Java中的Map

    直接看代码: //模拟一个Map对象 function Map(){ //声明一个容器 var container={}; //定义一个put方法,向容器中存值 this.put=function(k ...

  6. javascript创建自定义对象和prototype

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. JavaScript自定义事件

    很多DOM对象都有原生的事件支持,向div就有click.mouseover等事件,事件机制可以为类的设计带来很大的灵活性,相信.net程序员深有体会.随着web技术发展,使用JavaScript自定 ...

  8. JavaScript 类的定义和引用 JavaScript高级培训 自定义对象

    在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等.     一,概述 在Java语言中 ...

  9. JavaScript对象(来自百度知道)

    JavaScript中对象的创建有以下几种方式: (1)使用内置对象(2)使用JSON符号(3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种:1,JavaScript ...

随机推荐

  1. PHP发送电子邮件

    1.导入文件,如本案例把Stmp.class.php放到Common\Common目录下,代码很多,直接复制就行! <?php namespace Common\Common; class Sm ...

  2. ORACLE 误删除视图恢复

    1.使用 dba_views 回退到特定时间段,查看定义 select view_name,text from (select * From dba_views AS OF TIMESTAMP(SYS ...

  3. umask

    1. 首先我们来思考umask是什么? umask 是系统设置的权限的默认值,在etc/profile里面的shell 脚本有设置规则. 对于root用户和用户而言,不可以直接用的 需要用减法 比如 ...

  4. Java 和 Google Chrome 浏览器

    来源:https://java.com/zh_CN/download/faq/chrome.xml 本文适用于: 浏览器: Chrome Java 版本: 7.0, 8.0 Chrome 不再支持 N ...

  5. 提升你的开发效率,10 个 NPM 使用技巧

    对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹(npm init),下载npm模块(npm install),创建测试(npm test) 和自定义脚本(npm run).但是, ...

  6. Bootstrap<基础四> 代码

    Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...

  7. Bash shell的内建命令:type

    type指令是用来观察指令时来自于外部指令还是内建在bash中的指令. type  [-tpa]  name 选项与参数: :不加任何选项与参数时,type会显示出name是外部指令还是bash内建指 ...

  8. HDU 1005 Number Sequence

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  9. MAC与windows下打开当前文件路径的命令行(终端)

    MAC 下文件夹与终端: 1.打开当前路径的终端窗口方法: ①直接拖动要打开的文件夹到终端 ②打开finder的服务偏好设置, 勾选"新建位于文件夹位置的终端"选项, 以后可以在文 ...

  10. MVVM ObservableCollection<> ListView

    目标:在ListView中,设两列,一列表示人的姓名,一列表示年龄,用ObservableCollection<>来实现. 编程: 1)定义类Person public class ABC ...