java script4创建对象

来源:互联网 发布:淘宝给商家结算的周期 编辑:程序博客网 时间:2024/06/13 11:31

在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
原创粉丝点击