`

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 Data();
       JS对象变量的引用方式有两种:
(1)       点号方式引用,如,data.name。
(2)       数组方式引用,如,data[‘name’]。

 

分享到:
评论

相关推荐

    JavaScript中文简介 亲自整理

    函数表达式和函数声明是JavaScript的两种定义方式,其中匿名函数和箭头函数是常见的写法。 面向对象在JavaScript中表现为基于原型的继承。每个对象都有一个proto(或__proto__)属性,指向创建该对象的构造函数的...

    javascript函数以及基础写法100多条实用整理

    JavaScript函数及基础写法知识点详细整理 JavaScript是前端开发中不可或缺的技术之一,提供了网页中动态交互、数据处理和内容展示的能力。以下是一些基础的JavaScript函数和写法,它们在日常的项目开发中非常实用,...

    廖雪峰javascript,python和git教程

    - JavaScript是一种高级编程语言,广泛应用于网页中,可以创建动态交互效果,通过DOM(文档对象模型)操作来实现。 #### 快速入门 - JavaScript的基本语法,例如变量声明、运算符、控制流程(如if语句、循环)。 #...

    Jquery插件写法笔记整理

    这些插件在jQuery对象获取之后进行操作,借助jQuery强大的选择器和DOM操作能力,极大地增强了原生JavaScript的功能。 接着,我们来详细解析jQuery插件的类型和机制。一般来说,jQuery插件可以分为三种类型:jQuery...

    A samart way to learn javascript

    68. Objects: Properties(对象:属性):对象的属性定义和属性访问。 以上知识点涵盖了从基础的语法、数据类型、变量,到控制结构、函数的使用、事件处理,再到高级的DOM操作和对象属性管理,为初学者提供了一条...

    javaScript集合2

    JavaScript中的基本数据类型包括字符串(String)、数字(Number)、布尔(Boolean)、空值(null)、对象(Object)和函数(Function)。 8. **类型转换函数:** ```javascript parseInt(), parseFloat() ``` `parseInt()...

    JavaScript之class继承_动力节点Java学院整理

    JavaScript的对象模型是基于原型实现的,特点是简单,缺点是理解起来比传统的类-实例模型要困难,最大的缺点是继承的实现需要编写大量代码,并且需要正确实现原型链。 有没有更简单的写法?有! 新的关键字class...

    IT公司面试笔试题库-腾讯Javascript面试题.doc

    ### 问题7:创立自定义对象的写法 - **描述缺失**,无法判断具体选项及答案。 ### 问题8:打印结果 - **描述缺失**,无法判断具体代码及答案。 ### 问题9:描述中的错误 - **正确答案**:(D) JavaScript 中变量名...

    jQuery学习笔记精心整理

    ### jQuery学习笔记精心整理 #### 一、什么是jQuery 1. **定义**: - **第三方**:jQuery是由第三方组织或个人编写的函数库,并非浏览器内置或开发者自定义的函数,因此使用前需从官方网站([www.jquery.com]...

    面试问题整理面试问题整理

    Struts 框架的工作流程、Struts2 与 Struts1 的区别、Hibernate 的优点和...* DDL 和 DML 语句:DDL 语句是用来定义数据库结构的,DML 语句是用来操作数据库数据的。 * 视图:是一种虚拟的表,基于其他表的查询结果。

    es6整理笔记2018.10

    **定义**:`Array.from()` 方法创建一个新的数组实例,从一个类数组对象或可迭代对象转换而来。 **基本用法**: - 将类数组对象转换为数组:`let arr2 = Array.from(arrayLike);` - 对每个元素进行处理:`Array....

    Java专业术语标准化规范表

    - **定义与解释**:AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。它通过在后台与服务器进行少量数据交换,使得网页可以在无需重新加载整个页面的情况下更新部分数据。 - **应用场景**...

    JavaScript箭头函数_动力节点Java学院整理

    使用箭头函数,你可以确保`this`始终指向预期的对象,从而避免了过去常用的`var that = this`这样的hack写法。 总的来说,箭头函数为JavaScript提供了更简洁的语法和更清晰的作用域行为,使得编写函数更加直观,...

    jquery开发入门整理(所需要了解的)

    该方法可以将JSON字符串转换为JavaScript对象,便于后续的数据处理。在实际开发中,通常会结合`$.ajax()`方法来发送异步请求,并通过回调函数处理服务器返回的JSON数据。 ### 阐述jQuery工具函数的使用和解决方案 ...

    Javascript-Simple-Cheat-Sheet:只是我的个人备忘单上的一些很酷的JS东西

    本备忘单是个人为了记录和整理JavaScript中的一些实用技巧和常见功能而创建的,旨在帮助开发者快速查阅和理解JavaScript的基本语法和高级特性。 1. 变量声明: 在JavaScript中,我们可以使用`var`, `let`, 和 `...

    自己整理的一些关于C#的基础以及面试工作中长遇到的东西

    理解如何定义类,创建对象,以及如何使用继承来实现代码重用,是C#学习的基础。 3. **接口**:接口在C#中用于定义一组方法签名,使得不同类可以实现相同的契约,实现多继承的效果。 4. **委托与事件**:C#中的委托...

    HTML第二部分作业(含答案).docx编程资料

    - **A) //this is a comment**:此写法适用于JavaScript中的单行注释。 - **B) //this is a comment//**:此写法不正确。 - **C) /*this is a comment*/**:这是正确的CSS注释语法。 - **D) 'this is a comment**:...

    js-arrange:js知识的整理总结

    "js-arrange" 是一个针对JavaScript知识进行整理和总结的项目,旨在帮助开发者系统地理解和掌握这门语言的核心概念与实践技巧。 1. **基础语法** - 变量声明:JavaScript 支持var、let、const三种声明变量的方式,...

    整理一些最近经常遇到的前端面试题

    "整理一些最近经常遇到的前端面试题" 本文总结了三十道前端面试题,涵盖了javascript、jquery、html、css等多个方面的知识点。下面将对每个知识点进行详细的解释: 1. 标签属性中title和alt的区别: title是设置...

Global site tag (gtag.js) - Google Analytics