`
wanglihu
  • 浏览: 909183 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

javascript中定义对象方式

 
阅读更多

1.在javascript中,可以动态添加对象的属性,也可以动态删除对象的属性。

实例:

var obj = new Object();//定义对象的一种方式。

obj["username"] ="wlh";//为对象添加属性的第一种方式

obj.password = "wlh" ; // 为对象添加属性的第二种方式

obj.getName = function(name){

   this.name = name;

   alert(this.name); 

alert(obj.username);

 alert(obj.password);

obj.getName("wlh"); 

其中第一种方式与第二种方式是等价的。

如果想删除该属性,可以使用如下的操作:

delete obj.username;//username属性已经从obj对象中删除。

alert(obj.username);//返回undefined

 

2.定义对象的第二种方式:是最常用的方式。

 

var obj = {username:"wlh",password:"wlh"} ;

alert(obj.username);

 

3.数组对象的定义:

var arr = new Array();//第一种方式

arr.push(1);

 arr.push(2);

 arr.push(3);

var arr = [1,27,2,3]; //第二种方式

arr.sort();//数组排序,默认升序

alert(arr); //结果是1,2,27,3

说明:在javascript数组的sort方法来说,它会先讲待排序的内容转换为字符串(调用toString()方法),按照字符串的前后排序顺序进行排序。

function compare(num1,num2){

   var temp1 = parseInt(num1);

    var temp2 = parseInt(num2);

if(temp1 < temp2){

   return -1;

} else if(temp1 == temp2){

  return 0;

}else{

   return 1;

}

}

arr.sort(compare);//函数名是对象引用

alert(arr);//结果为1,2,3,27

3.匿名函数:

arr.sort(function(num1,num2){

    var temp1 = parseInt(num1);

    var temp2 = parseInt(num2);

    if(temp1 < temp2){

       return -1;

    } else if(temp1 == temp2){

       return 0;

    }else{

       return 1;

    }

});

4.javascript中定义对象的几种方式(javascript中没有类的概念,只有对象):

1)基于已有对象扩充其属性和方法:

var obj = new Object();

obj.password = "wlh" ;

obj.getName = function( username ){

   this.username = username;

   alert(this. username); 

alert(obj. username );
obj.getName("wlh");
alert(obj. username ); 

结果:

undefined

wlh

wlh

2)工厂方式创建对象 :

//构造函数不传参

function createObject(){

    var obj = new Object();

    obj.username = "wlh"; 

    obj.password = "123456";

    obj.get = function(){

          alert(this.username + "," + this.password); 

    } 

    return obj; 

//构造函数传参

function createObject2(username,password){

    var obj = new Object();

    obj.username = username

    obj.password = password ;

    obj.get = function(){//缺点是耗内存

          alert(this.username + "," + this.password); 

    } 

    return obj; 

var obj1 = createObject();

obj1.get(); 

var obj2 = createObject2("wlh","888888");

obj2.get(); 

//改进方法:让一个函数对象被多个对象所共享,而不是每个对象拥有一个函数对象。

function get(){

      alert(this.username + "," + this.password); 

}

function createObject2(username,password){

 

    var obj = new Object();

    obj.username = username

    obj.password = password ;

    obj.get = get;

    return obj; 

}

var obj2 = createObject2("wlh","888888");

obj2.get(); 

 3)构造函数方式:

function Person(){

//执行第一代码前,js引擎会为我们生成一个对象 

      this.username = "wlh";

      this.password = "999999";

      this.getInfo = function(){

         alert(this.username + "," + this.password); 

      } //该处隐含一个return语句,用于返回之前生成对象

 

function Person2(username,password){

//执行第一代码前,js引擎会为我们生成一个对象 

      this.username = username ;

      this.password =  password;

      this.getInfo = function(){

            alert(this.username + "," + this.password); 

      } //该处隐含一个return语句,用于返回之前生成对象

var person  = new  Person2("wlh","000000");

person.getInfo(); 

4)原型(“prototype”)方式 

function Person(){

}

Person.prototype.username = "wlh" ;

Person.prototype.password = "111111";

Person.prototype.getInfo = function(){

       alert(this.username + "," + this.password); 

var person = new Person();

person.getInfo();

person.username= "otherwlh";

person.getInfo();

但是单纯的使用原型方式定义类无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。

如果使用原型方式创建对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性页会反映到其他对象当中。

比如:

 

 

function Person(){

}

 

Person.prototype.username = new Array() ;

Person.prototype.password = "111111";

Person.prototype.getInfo = function(){

       alert(this.username + "," + this.password); 

var person1 = new Person();

var person2 = new Person();

person1.username.push("aaaaaa");

person1.username.push("bbbbbb");   //这是对象引用

person1.password = "222222";//因为这是一个常量

person1.getInfo();

 person2.getInfo();

结果:

aaaaaa,bbbbbb,222222

aaaaaa,bbbbbb,111111

可以通过构造函数搭配原型方式创建js对象:

 

function Person(){

this.username = "111111";

this.password = "222222";

}

Person.prototype.getInfo = function(){

       alert(this.username + "," + this.password); 

 

5)动态原型方式创建对象

function Person(){

    this.username = "111111";

    this.password = "222222";

    if(typeof Person.flag == "undefined"){

         alert("invoke!");

         Person.prototype.getInfo = function(){

                alert(this.username + "," +this.password);

        }

        Person.flag = true;

   }

}

 

var p = new Person();

var p2 = new Person();

p.getInfo();

p2.getInfo();

分享到:
评论

相关推荐

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

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

    javaScript定义对象的五种方法

    javaScript定义对象的五种方法,个人感觉很好

    javascript定义对象

    javascript定义对象的四各方式。

    Javascript对象定义的几种方式

    Javascript对象定义的几种方式

    javascript工厂方式定义对象.docx

    javascript工厂方式定义对象.docx

    JavaScript中定义对象原型的两种使用方法

    本文主要对JavaScript中定义对象原型的两种使用方法进行介绍,具有很好的参考价值,下面就跟小编一起来看下吧

    JavaScript面向对象

    在JavaScript中定义JavaScript对象有两种方式: 方式一: var Book ={ getBookName:function(){ alert&#40;"获取书的名称"&#41; ; } }; 方式二 var oBook = function(){}; oBook.getBookName=...

    JavaScript使用prototype定义对象类型

    From: JavaEye.com prototype提供了一套JavaScript面向对象基础设施,我们可以使用它来进行面向对象编程,定义对象类型方式如下: var Person = Class.create(); Person.prototype = { initialize : ...

    JavaScript面向对象程序设计中对象的定义和继承详解

    本文实例讲述了JavaScript面向对象程序设计中对象的定义和继承。分享给大家供大家参考,具体如下: 在面向对象的Javascript编程中,希望代码优雅有高效是非常重要的。...(2)用原型方式定义对象的函数

    精通JavaScript对象(math对象)

    JavaScript中的Math对象的与众不同之处在于,它是一个全局对象。在使用Math对象之前,既不需要将一个变量声明为Math对象,也不需要定义一个新的Math对象,JavaScript将自动地创建好Math对象,我们只须直接使用它即可...

    javascript如何定义对象数组

    本文主要介绍javascript如何定义对象数组,两种方法,比较实用,希望能给大家做一个参考。

    javascript内值对象&浏览器对象 (1).docx

    JavaScript中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。 JavaScript提供多个内建对象,比如String、Date、Array等等,使用对象前先定义,如下使用数组对象:Eg: var objectName...

    讲解JavaScript的面向对象的编程

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

    javascriptEvent对象详解定义.pdf

    javascriptEvent对象详解定义.pdf

    JavaScript定义全局对象的方法示例

    主要介绍了JavaScript定义全局对象的方法,结合实例形式分析了javascript全局对象的简单定义流程与实现技巧,需要的朋友可以参考下

    JavaScript中定义类的方式详解

    本文实例讲述了JavaScript中定义类的方式。分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚...

    JS定义类或对象

    Javascript是基于对象的脚本语言,理所当然会有对象概念的存在,通常我们在项目中都...所以定义对象可以让你仅仅记住对象名称极其作用,就会达到易控制,易维护和易扩展。在优化你的JS代码的同时也提升了你的开发水平。

Global site tag (gtag.js) - Google Analytics