javascript构造函数方法定义一个对象
复制代码代码如下所示:
*
01。定义对象的第一种方式。
对象=新对象();
警报(对象用户名);
1.1添加属性用户名
对象{用户名liujianglong} =;
/ /对象。用户名为liujl ;
警报(对象用户名);
1.2删除属性用户名
删除object.username; / /用户名属性已被删除的对象
警报(对象用户名);
* /
02。以第二种方式定义对象——Javascript中定义对象的最常用方式之一
var对象= {姓名:zhangsan
警报(对象名称);
警报(对象,年龄);
警报(对象,性别);
属性名称:该方法的名称也是可能的,因为函数本身是一个对象。
Javascript数组排序
复制代码代码如下所示:
var array = { 1,3,25 };
中
VaR的比较函数(num1,num2){
无功temp1 = parseInt(num1);
VaR temp2 = parseInt(num2);
如果(temp1 < temp2){
返回- 1;
} else if(temp1 = = temp2){
返回0;
其他{ }
返回1;
}
}
/ / array.sort(比较); / / 01。函数名是对象引用。
中
02。匿名函数
Array.sort(函数C(num1,num2){
无功temp1 = parseInt(num1);
VaR temp2 = parseInt(num2);
如果(temp1 < temp2){
返回- 1;
} else if(temp1 = = temp2){
返回0;
其他{ }
返回1;
}
});
中
警报(阵列);
在Javascript中定义对象的几种方法(Javascript中没有类的概念,只有对象)
第一种方法:基于现有对象展开其属性和方法
复制代码代码如下所示:
01。基于现有对象扩展其属性和方法
对象=新对象();
对象。用户名为zhangsan;
对象。sayname =函数(名){
这个用户名=名字;
警报(此用户名);
}
警报(对象用户名);
object.sayname(思);
警报(对象用户名);
这种方法有一定的局限性,因为Javascript没有像java类的概念和写一个类。然后,新的可以获得这些属性和方法的对象。
如果你想拥有object2,你只能写一份上面的代码,这是非常不好的。
第二种方式:工厂模式
类似于静态工厂方法在java。
复制代码代码如下所示:
对象/工厂方法
CreateObject函数(){ var =
对象=新对象();
对象。用户名为zhangsan;
对象密码123;
对象=获取函数(){
警报(此用户名+
}
返回对象;
}
Var obj1=createObject ();
var obj2 = CreateObject();
obj1.get();
2 修改密码
obj2 {密码} =123456;
obj2.get();
上面的方法有创建对象的缺点(每个对象都有get方法,这会浪费内存)。改进的工厂模式(所有对象共享get方法):
复制代码代码如下所示:
所有对象共享
var =函数(){
警报(此用户名+
}
对象/工厂方法
var =函数CreateObject(用户名、密码){
对象=新对象();
对象;
对象。密码=密码;
对象获取;注意:此方法不写入括号。
返回对象;
}
以工厂方法创建对象
VaR object1 = CreateObject(zhangsan
VaR object2 = CreateObject(丽丝
调用get方法
object1.get();
object2.get();
第三种方法:构造函数方法定义对象
复制代码代码如下所示:
var =函数(){
警报(此用户名+
}
功能人(用户名,密码){
在执行第一行代码时,js引擎将为我们生成一个对象。
这个用户名=用户名;
密码=密码;
这个=获取=获得;
在这里,有一个隐藏的返回语句,用于返回结果对象{这里是和工厂模式不一样的地方。
}
无功的人=新的人(zhangsan
person.get();
第四种方式:原型(原型)创建对象的方式
原型是对象对象中的一个属性,所有的人对象也可以具有原型的属性。
您可以向对象的原型、方法添加一些属性。
简单地使用一个原型来创建一个对象的缺点:(1)不能传递参数,只能在创建对象之后改变它的值。
(2)可能导致程序错误。
复制代码代码如下所示:
功能人(){
}
的人。原型。用户名为zhangsan;
人。原型。密码=123;
的人。原型。GETINFO =函数(){
警报(此用户名+
}
VaR甲=新的人();
var 2 =新的人();
甲。用户名为丽丝;
person1.getinfo();
person2.getinfo();
复制代码代码如下所示:
功能人(){
}
原型。用户名=新数组();
人。原型。密码=123;
的人。原型。GETINFO =函数(){
警报(此用户名+
}
VaR甲=新的人();
var 2 =新的人();
person1.username.push(wanglaowu );
person1.username.push(wanglaowu2 );
2。密码为456;
person1.getinfo();
person2.getinfo();
简单地使用原型定义对象不能在构造函数中赋予属性的初始值,并且只能在生成对象之后更改属性的值。
第五种方法:使用原型+构造函数定义对象——推荐使用
物体的属性不互相干扰。
在不同对象之间共享相同的方法
复制代码代码如下所示:
使用/原型+方式定义对象构造函数
功能人(){
在构造函数中定义的属性
这个用户名=新数组();
这个密码= 123;
}
在原型中定义的方法
的人。原型。GETINFO =函数(){
警报(此用户名+
}
新的人();
新的人();
p1.username.push(zhangsan);
p2.username.push(思);
p1.getinfo();
p2.getinfo();
第六种方式:动态原型-推荐使用
在构造函数中,所有对象都由一个方法由标志量共享,并且每个对象都有自己的属性。
复制代码代码如下所示:
var =函数(用户名,密码){
这个用户名=用户名;
密码=密码;
如果(typeof的人。旗= =未定义){
警报();
的人。原型。GETINFO =函数(){
警报(此用户名+
}
人,旗帜=真的;
}
}
VaR P1 =新的人(zhangsan
VaR P2 =新的人(丽丝
p1.getinfo();
p2.getinfo();