`
elvisli
  • 浏览: 19246 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

avascript定义对象写法

    博客分类:
  • js
阅读更多

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面向对象编程指南(第2版).rar

    5. 类(Class)语法:ES6引入的类语法糖,提供更接近传统面向对象语言的写法。 6. 封装与模块化:如何使用闭包和立即执行函数表达式(IIFE)来实现封装,以及AMD、CommonJS和ES6模块系统。 7. 继承模式:浅谈原型...

    JavaScript创建对象的写法

    对象是什么从JavaScript定义上讲对象是无序属性的集合,其属性可以包含基本值、对象或函数。也就是说对象是一组没有特定顺序的属性,每个属性会映射到一个值上,是一组键值对,值可以是数据或对象。 最简单的对象...

    107个常用Javascript语句参数写法

    JavaScript的`Math`对象提供了一系列数学函数,如`Math.abs()`(绝对值)、`Math.round()`(四舍五入)、`Math.random()`(随机数)等,用于进行各种数学计算。 以上总结了从给定文件信息中提炼出的JavaScript关键...

    100多个很有用的javascript函数以及基础写法集合

    JavaScript 函数和基础写法大集合 JavaScript 是一种广泛应用于 Web 开发的编程语言,下面总结了 100 多个有用的 JavaScript 函数和基础写法。 输出语句 document.write("") 是 JavaScript 中最基本的输出语句,...

    JavaScript类的写法

    早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成类。 在js中,写成类的本质基本都是 构造函数+原型。下面,就讨论一下js类的几种写法...

    详解JavaScript的另类写法_.docx

    本文将深入探讨JavaScript的一些非传统写法,帮助你提升代码的趣味性和效率。 首先,让我们来看看匿名函数的不同写法。匿名函数在JavaScript中是没有指定名称的自执行函数,通常写作`(function(){})();`。在实际...

    javascript如何创建对象

    通过定义一个函数,把创建对象的过程封装起来,这个函数可以返回一个新的对象。例如,创建一个createPerson函数来创建Person对象,然后通过这个函数来创建多个person对象。 ```javascript function createPerson...

    《JavaScript内核系列》和《JavaScript面向对象基础》

    - **函数定义**:函数是JavaScript的基本构造块,可以作为值传递,也可以作为对象属性存储。 - **函数作用域**:了解函数作用域与块级作用域的区别,以及如何使用闭包来创建私有变量。 - **箭头函数**:ES6引入的...

    讲解JavaScript的面向对象的编程

    本人在带学生使用EXT框架时,我发现学生阅读Ext的sample代码有问题,特别是对JavaScript的面向对象编程的书写方式不熟悉,于是,写了四个sample来说明它现代JS编程的对类的定义方式、类继承的方式,以及怎样发展到...

    javascript 面向对象程序设计博客文章

    尽管JavaScript的原始OOP机制基于原型,但ES6引入了类语法,它提供了一种更接近传统面向对象语言的写法,但底层仍然基于原型。类的实例化、继承、静态方法等都可以通过类语法实现。 9. **模块系统** JavaScript有...

    javascript 定义新对象方法

    在JavaScript中,定义新对象的方法有很多种,每种方式都有其适用场景和特点。这里我们将深入探讨几种常见的创建对象的方法,并以标题和描述中提到的示例作为起点。 首先,我们看到的是字面量(Literal)或对象字面...

    Javascript中的对象.pdf

    4. ES6中的class:在ES6中引入了class关键字,它提供了一种更接近传统面向对象语言的写法。尽管class看起来像传统的类,但实际上JavaScript的class仍然基于原型。在class中定义的方法实际上挂载到原型上,而静态属性...

    JavaScript面向对象程序程序设计PPT与代码

    ES6引入了类的概念,虽然JavaScript的类本质上仍然是函数,但它提供了一种更符合传统面向对象语法的写法。例如: ```javascript class Person { constructor(name) { this.name = name; } sayName() { ...

    高级面向对象写法[收集].pdf

    本文档主要探讨了高级的面向对象写法,包括类的创建、继承、混入和实例化,以及模块化、沙盒机制、模块间解耦和按需加载等主题。 1. **创建类、继承、混入、实例化** JavaScript并非基于类的语言,而是基于原型。...

    Javascript中定义方法的另类写法(批量定义js对象的方法)

    总之,Javascript中批量定义对象的方法提供了一种高效、简洁的替代传统方法的方式,能够简化代码并提高性能,但也需要注意代码可读性和维护性的潜在下降。在实际的项目开发中,我们可以根据具体的需求和环境来权衡...

    js面向对象的写法

    以下将详细介绍标题和描述中提到的四种常见的JavaScript面向对象写法以及`this`关键字的使用。 1. **工厂模式** 工厂模式是通过函数来创建对象,它不直接关联构造函数。在给定的例子中,`Circle`函数创建了一个新...

    分享19个JavaScript 有用的简写写法

    JavaScript中的简写写法能极大地提高代码的可读性和效率,以下是一些常见的简写技巧,它们基于ES5和ES6的特性: 1. **三元操作符**:三元操作符(`condition ? exprIfTrue : exprIfFalse`)可以替代简单的if...else...

    如何用JavaScript定义一个类

    在JavaScript中,尽管它最初设计时并没有传统的面向对象编程中的"类"概念,但随着语言的发展,为了适应更丰富的编程模式,JavaScript引入了类的概念。ES6(ECMAScript 2015)版本开始正式引入`class`关键字,使得...

Global site tag (gtag.js) - Google Analytics