首页技术js数组赋值,js数组添加数组

js数组赋值,js数组添加数组

编程之家2026-07-03986次浏览

其实js数组赋值的问题并不复杂,但是又很多的朋友都不太了解js数组添加数组,因此呢,今天小编就来为大家分享js数组赋值的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

js数组赋值,js数组添加数组

js创建数组对象的过程有几种特点是什么

js编程中创建对象的几种方式,如原始方法、工厂方法等创建对象。

1、原始方法

复制代码代码示例:

<script type="text/javascript">

var obj= new Object();

obj.name="Koji";//为对象添加属性

js数组赋值,js数组添加数组

obj.age= 21;

obj.showName= function(){//为对象添加方法

alert(this.name);

}

obj.showAge= function(){

alert(this.age);

js数组赋值,js数组添加数组

}

obj.showName();//Koji

obj.showAge();//21

</script>

上面的方式通过new关键字生成一个对象,然后根据JS是动态语言的特性添加属性和方法,构造一个对象。其中的this是表示调用该方法的对象。

这种方式的问题是如果需要多次创建对象,则需要重复代码多次,不利于代码的复用。

2、工厂方法:

复制代码代码示例:

<script type="text/javascript">

function createObj(){

var obj= new Object();//创建对象

obj.name="Koji";

obj.age= 21;

obj.showName= function(){

alert(this.name);

}

obj.showAge= function(){

alert(this.age);

}

return obj;//返回对象

}

var obj1= createObj();

var obj2= createObj();

obj1.showName();//Koji

obj2.showAge();//21

</script>

这种方式提高了代码重用率,还可以改变工厂方法,传入参数赋值。

复制代码代码示例:

<script type="text/javascript">

function createObj(name, age){//构造对象时可以传入初始化参数

var obj= new Object();//创建对象

obj.name= name;

obj.age= age;

obj.showName= function(){

alert(this.name);

}

obj.showAge= function(){

alert(this.age);

}

return obj;//返回对象

}

var obj1= createObj("Koji", 22);

var obj2= createObj("Luo", 21);

obj1.showName();//Koji

obj1.showAge();//22

obj2.showName();//Luo

obj2.showAge();//21

</script>

上面的方式虽然可以提高代码的复用率,但和面向对象中类的概念相比有一个很大的缺陷。面向对象强调对象的属性私有,而对象的方法是共享的。而上面的工厂方法创建对象的时候要为每个对象创建各自私有的方法。同时由于为每个对象都创建逻辑相同的方法,浪费内存。

改进如下:

复制代码代码示例:

<script type="text/javascript">

function createObj(name, age){

var obj= new Object();//创建对象

obj.name= name;

obj.age= age;

obj.showName= showName;

obj.showAge= showAge;

return obj;//返回对象

}

function showName(){//函数也是一个对象

alert(this.name);

}

function showAge(){

alert(this.age);

}

var obj1= createObj("Koji", 22);

var obj2= createObj("Luo", 21);

obj1.showName();//Koji

obj1.showAge();//22

obj2.showName();//Luo

obj2.showAge();//21

</script>

上面通过定义连个函数对象,解决了不同对象持有函数对象的私有问题。现在所有对象的方法都持有上面两个函数的引用。但这么一来的话,对象的函数又和对象成了相互独立,不相干的了。这和面向对象中特定方法属于特定类的思想不符合。

3、构造函数方式

复制代码代码示例:

<script type="text/javascript">

//定义一个构造函数,用来生成对应的对象,可以类比Java中的构造函数

function Person(name, age){

//当调用new Person的时候,在执行第一行代码前,先生成一个Person对象,并将对象在内存中的

//索引赋值给this关键字,此时可以通过this关键字操作新生成的对象,如下面的添加属性或方法

this.name= name;//this关键字不能少。为当前对象,即this关键字引用的对象的name属性赋值

//,实际相当于为当前对象添加name属性后,再为其name属性赋值。

this.age= age;

this.showName= function(){//为当前对象添加方法

alert(this.name);

}

this.showAge= function(){

alert(this.age);

}

//将当前对象返回给赋值符号左边的变量(不必明确使用return)

}

var obj1= new Person("Koji", 22);//生成一个Person对象

var obj2= new Person("Luo", 21);

obj1.showName();//Koji

obj1.showAge();//22

obj2.showName();//Luo

obj2.showAge();//21

</script>

构造函数的方式和工厂方式一样,会为每个对象创建独享的函数对象。当然也可以将这些函数

对象定义在构造函数外面,这样又有了对象和方法相互独立的问题。

原型方法:

该方法利用的对象的prototype属性

复制代码代码示例:

<script type="text/javascript">

function Person(){}//定义一个空构造函数,且不能传递参数

//将所有的属性的方法都赋予prototype属性

Person.prototype.name="Koji";//添加属性

Person.prototype.age= 22;

Person.prototype.showName= function(){//添加方法

alert(this.name);

}

Person.prototype.showAge= function(){

alert(this.age);

}

var obj1= new Person();//生成一个Person对象

var obj2= new Person();

obj1.showName();//Koji

obj1.showAge();//22

obj2.showName();//Koji

obj2.showAge();//22

</script>

当生成Person对象的时候prototype的属性都赋值给了新的对象。那么属性和方法是共享的。

该方法的问题首先是构造函数不能传参,每个新生成的对象都有默认值。其次,方法共享没有任何问题,但是属性共享就有问题,当属性是可改变状态的对象的时候。

例子:

复制代码代码示例:

<script type="text/javascript">

function Person(){}//定义一个空构造函数,且不能传递参数

Person.prototype.age= 22;

Person.prototype.array= new Array("Koji","Luo");

Person.prototype.showAge= function(){

alert(this.age);

}

Person.prototype.showArray= function(){

alert(this.array);

}

var obj1= new Person();//生成一个Person对象

var obj2= new Person();

obj1.array.push("Kyo");//向obj1的array属性添加一个元素

obj1.showArray();//Koji,Luo,Kyo

obj2.showArray();//Koji,Luo,Kyo

</script>

以上代码通过obj1向obj1的属性array添加元素的时候,obj2的arra属性的元素也跟着受到影响,原因就在于obj1和obj2对象的array属性引用的是同一个Array对象,那么改变这个Array对象,另一引用该Array对象的属性自然也会受到影响混合的构造函数/原型方式。

使用构造函数定义对象的属性,使用原型(prototype)定义对象的方法,这样就可以做到属性私有,而方法共享。

例子:

复制代码代码示例:

<script type="text/javascript">

function Person(name, age){

this.name= name;

this.age= age;

this.array= new Array("Koji","Luo");

}

Person.prototype.showName= function(){

alert(this.name);

}

Person.prototype.showArray= function(){

alert(this.array);

}

var obj1= new Person("Koji", 22);//生成一个Person对象

var obj2= new Person("Luo", 21);

obj1.array.push("Kyo");//向obj1的array属性添加一个元素

obj1.showArray();//Koji,Luo,Kyo

obj1.showName();//Koji

obj2.showArray();//Koji,Luo

obj2.showName();//Luo

</script>

属性私有后,改变各自的属性不会影响别的对象。同时,方法也是由各个对象共享。在语义上,

这符合了面相对象编程的要求。

4、动态原型方法

复制代码代码示例:

<script type="text/javascript">

function Person(name, age){

this.name= name;

this.age= age;

this.array= new Array("Koji","Luo");

//如果Person对象中的_initialized为undefined,表明还没有为Person的原型添加方法

if(typeof Person._initialized=="undefined")

{

Person.prototype.showName= function(){

alert(this.name);

}

Person.prototype.showArray= function(){

alert(this.array);

}

Person._initialized= true;//设置为true,不必再为prototype添加方法

}

}

var obj1= new Person("Koji", 22);//生成一个Person对象

var obj2= new Person("Luo", 21);

obj1.array.push("Kyo");//向obj1的array属性添加一个元素

obj1.showArray();//Koji,Luo,Kyo

obj1.showName();//Koji

obj2.showArray();//Koji,Luo

obj2.showName();//Luo

</script>

这种方法和构造函数/原型方式大同小异。只是将方法的添加放到了构造函数之中,同时在构造函数Person上添加了一个属性用来保证if语句只能成功执行一次。

在实际应用中采用最广泛的是构造函数/原型方法。动态原型方法也很流行,它在功能上和构造函数/原型方法是等价的,不要单独使用构造函数或原型方法。

js数组添加元素

js数组添加元素的方法有三个,分别是push()、unshift()、splice(),下面分别说一下各自的用法

1、push(),在数组的末尾添加新的元素,并返回数组新长度

语法:a.push(“新元素1”,“新元素2”);

实例:

结果:

2、unshift(),在数组的开头添加新元素,数组中的元素自动后移,返回数组新长度

语法:a.unshift(“新元素1”,“新元素2”);

注:unshift()方法不能用于 Internet Explorer 8之前的版本,插入的值将被返回成 undefined。

实例

结果:

3、splice(),在指定位置添加一个或者多个新元素,插入位置的元素自动后移,返回""。

例如,在第二位置添加新元素

语法:a.splice(2,0,“新元素1”,“新元素2”);

实例:

结果:

js中如何向json数组添加元素

比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre。做法如下:

var jsonObj={

'param1':22,

'param2':33

};

jsonObj. newParam='pre';

新的属性添加以后,json对象变成:

var jsonObj={

'param1':22,

'param2':33,

'newParam':'pre'

};

扩展资料:

json数据格式:主要由对象{}和数组 [ ]组成:

其中对象包括键值对(属性:属性值){key: value},value可为 str,num,list,obj。取值使用 objcet.key。

{key: value, key2:value2,}键:值用冒号分开,对间用,连接。

数组包含元素:num,str,list,objcet都可以,利用索引访问 [index],用.连接各个值。

好了,文章到此结束,希望可以帮助到大家。

c语言入门经典 pdf?c语言入门下载easyui和layui哪个好,layui ajax