`
zhelong111
  • 浏览: 183561 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

几种定义Javascript对象的方式

 
阅读更多
游戏开发参考游戏网http://kfgame.sinaapp.com/
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’]。
比较简单的一种方式
var HistoryNew=function(){};
HistoryNew.prototype={
setHistory:function(cityShort){alert(cityShort);
}
};
?
var Animal = Class.create();
Animal.prototype = {
    initialize: function(name, sound) {
        this.name = name;
        this.sound = sound;
    },
    speak: function() {
        alert(name + " says: " + sound + "!");
    }
};
 
var snake = new Animal("Ringneck", "hissssssssss");
snake.speak();
// -> 提示:"Ringneck says: hissssssssss!"
var Dog = Class.create();
Dog.prototype = Object.extend(new Animal(), {
    initialize: function(name) {
        this.name = name;
        this.sound = "woof";
    }
}); 
 
var fido = new Dog("Fido");
fido.speak();
// -> 提示:"Fido says: woof!"
?
一个简单的类
function clsUser(){};
clsUser.prototype={
name:"",
pwd:"",
}
var objUser=new clsUser();
objUser.name="a";
alert(objUser.name);

var objB=new clsUser();
objB.name="b";
alert(objB.name);
<script type="text/javascript">
function MyClass(name){          
     this._name = name;  //在函数体内初始化属性
}
MyClass.prototype = {      //在prototype上定义属性和方法
     _name: null,
     showName: function(){
         alert(this._name);
     }
}
var m = new MyClass("fanrong");
m.showName();
</script>
分享到:
评论

相关推荐

    Javascript对象定义的几种方式

    Javascript对象定义的几种方式

    JAVASCRIPT中定义对象的几种方式.pdf

    JAVASCRIPT中定义对象的几种方式.pdf

    【JavaScript源代码】详解js创建对象的几种方式和对象方法.docx

    详解js创建对象的几种方式和对象方法  这篇文章是看js红宝书第8章,记的关于对象的笔记(第二篇)。 创建对象的几种模式:  工厂是函数的意思。工厂模式核心是定义一个返回全新对象的函数。 function getObj...

    关于JavaScript定义类和对象的几种方式

    可以看看这个例子: 代码如下: var a = ‘global’; (function () { alert&#40;a&#41;; var a = ‘local’;...因为所有JavaScript函数都是一个对象。在函数里声明的变量可以看做这个对象的“类似属性”。对

    JavaScript定义类的几种方式总结

    提起面向对象我们就能...javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: 代码如下:[removed] //定义 var oCar = new Objec

    常用javascript整理

    1.JavaScript的数值处理对象学习 .txt 2.JavaScript的系统函数学习 .txt 3.js中用于对象的语句——with和for...in语句...定义JavaScript对象的几种格式.txt 8.正则表达式.txt 9.55种网页常用小技巧 .txt

    JavaScript定义类或函数的几种方式小结

    工厂方式 javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: 代码如下: [removed] //定义 var oCar = new Object();

    文章目录 一、javaScript 的几种数据类型 1、数字类型 2、字符串 3、布尔型 4、数组 5、null 和 undef

    一、javaScript 的几种数据类型 1、数字类型 2、字符串 3、布尔型 4、数组 5、null 和 undefined 6、对象类型 二、 类型转换 1、字符串转整数 2、字符串转小数 3、数字转字符串 4、布尔型与其他类型的相互转换 5、...

    CKevens#-#05-02.面向对象:类的定义和继承的几种方式1

    前言类与实例:类的声明生成实例类与继承:如何实现继承:继承的本质就是原型链继承的几种方式类的定义、实例化类的定义/类的声明方式一:用构造函数模拟类(传统写法)/

    haoyi2015#Web-1#05-02.面向对象:类的定义和继承的几种方式1

    前言类与实例:类的声明生成实例类与继承:如何实现继承:继承的本质就是原型链继承的几种方式类的定义、实例化类的定义/类的声明方式一:用构造函数模拟类(传统写法)/

    JS定义函数的几种常用方法小结

    本文实例讲述了JS定义函数的几种常用方法。分享给大家供大家参考,具体如下: 在 JavaScript 语言里,函数是一种对象,所以可以说函数是 JavaScript 里的一等公民(first-class citizens)。 之前我们这样定义过一个...

    【JavaScript源代码】详解JavaScript中的链式调用.docx

    详解JavaScript中的链式调用 ...链式调用通常有以下几种实现方式,但是本质上相似,都是通过返回对象供之后进行调用。  this的作用域链,jQuery的实现方式,通常链式调用都是采用这种方式。 返回对象本身, 同t

    javascript面向对象之Javascript 继承

    上几节讲了 JavaScript 面向对象之命名空间 、 javascript 面向对象的JavaScript类 、 JavaScript 面向对象的之私有成员和公开成员 与 Javascript 面向对象之重载,大家可以先看上面的再继续往下看。在JavaScript...

    JavaScript 对象成员的可见性说明

    JavaScript对象构造的可见性定义可以分为以下几种: 1,私有属性(private properties) 通过var关键字定义对象构造中变量的作用域,该变量只能在对象构造方法的作用域内被访问。如: 代码如下: function Variable...

    JavaScript快速查询手册

    JavaScript 的语法和命令,按照它们的用法和功能分为几种类型。 对象是JavaScript 的构造块,它们被用来返回并修改表格、页面、浏览器和程序员定义的变量等的状况。理解对象的一种比较容易的方法是把它们看成一个...

    javascript中的面向对象

    相信大家对javascript中的面向对象写法都不陌生,那还记得有几种创建对象的写法吗?相信大家除了自己常写的都有点模糊了,那接下来就由我来帮大家回忆回忆吧! 1. 构造函数模式 通过创建自定义的构造函数,来定义...

    JavaScript内核系列

    动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例: Js代码 1. //定义一个对象 2. var obj = new Object(); 3. //动态创建...

    javascript函数的解释

    javascript函数的解释,解释了具体函数的功能,一、函数JavaScript函数集合 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document-&gt;html-&gt;(head,body) 4.一个浏览器窗口中的DOM顺序是:...

Global site tag (gtag.js) - Google Analytics