java script4创建对象

在java script,所有对象都是从object对象继承过来的,object中的属性是不可枚举的(propertyEnumerable返回false)因此无法通过for…in语句得到其中的属性

在java script中,可以动态添加对象的属性,也可以动态删除对象的属

var object = new Object();
object("username")="shengsiyuan";
alert(object.username);
delete object.username;
alert(object.username);

在javascript中定义对象的第二种方式:
var object=(username:”zhangsan”,password:123);
alert(object.username);
alert(object.password);

定义数组的两种方式

var array=new Array();

array.push(1);
array.push(2);
array.push(3);

第二种
var array=[1,2,3]

对于jAVA script数组的sort方法来说,它会先将待排序的内容转换为字符串(调用toString)方法,按照字符串的先后顺序进行排序
比如1.3.23.排序结果是1.23.3

java script中定义对象的几种方式(java script中没有类的概念,只有对象的概念)

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

var object = new Object();//生成一个object类型的对象
object.name="zhangsan"; //给对象定义一个属性
object.sayName=function(name) //为object对象定义一个方法
{
    this.name = name;
    alert(this.name)
}

2:工厂方式
1 )不带参数

function creatObject()
{
   var object = new Object();
   object.username = "zhangsan";
   object.password = "123";
   object.get = function()
   { 
      alert(this.username+","+this.password();)
   }
   return object;
}

var object1=creatObject();
var object2=creatObject();

object1.get();

2)让一个函数对象被多个对象所共享,而不是一个对象拥有一个函数对象

function get()
{
   alert(this.username +"," +this.password);
}


function creatObject(username,password)
{
    var object = new Object();

    object.username = username;
    object.password = password;

    object.get=get;
    return object;
}


var object = createObject("zhangsan","123");
var object2 = createObject("lisi","456");

object.get();
object2.get();

3 构造函数方式

function Person()
{

    //在执行第一行代码之前,js引擎会为我们生成一个对象
    this.username = "zhangsan";
    this.password = "123";

    this.goInfo = function()
    {
       alert(this.username + "," +this.password);
    }
    //此处有一个隐藏的return语句,用于将之前生成的对象返回
}

var person = new Person();
person.getInfo();

可以在构造对象时传参数

function Person(username,password)
{


    this.username = username;
    this.password = password;

    this.goInfo = function()
    {
       alert(this.username + "," +this.password);
    }

}

var person = new Person("zhangsan","123");
person.getInfo();

4 原型(”prototype“)方式

function Person()
{
}
Person.prototype.username = "zhangsan";
Person.prototype.password = "123";

Person.prototype.getInfo = function()
{
    alert(this.username + ","+this.password);
}

var person=new Person();
var person2=new Person();

person.username="lisi";

person.getInfo();
person2.getInfo();

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

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

使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法

function Person()
{
     this.username = new Array();
     this.password = "123";


Person.prototype.getInfo = function()
{
   alert(this.username + "," +this.password)
}

var p = new Person();
var p2 = new Person();

p.username.push("zhangsan");
ps.username.push("lisi");

p.getInfo();
p2.getInfo();

5 动态原型方式,,在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性

function Person()
{
    this.username = "zhangsan";
    this.password = "123";

    if(typeof Person.flag == "undefined")
    {
        laert("invoked");
        Person.proyotype.getInfo = function()
        {
            alert(this.username + "," +this.password);
        }
        Person.flag = true;
    }
}
var p = new Person();
var p2= new Person();

p.getInfo();
p2.fetInfo();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值