javascript如何对象创建?有哪几种方式

一、直接创建方式

1.语法

var 对象变量名 = new Object();//直接通过new的方法创建一个对象
对象变量名. property1 = value1;//propertyN为对象中的变量名;//可随意定义多个变量
对象变量名. propertyN = valueN;
对象变量名. methodName1 = function([参数列表]){
	//函数体
};
对象变量名. methodNameN = function([参数列表]){
	//函数体
}

2.实例

<script>
	var student = new Object();
	student.name = "Tom";//直接给对象中的元素赋值
	student.doHomework = function(){//直接给对象中的方法写方法
		console.log(this.name+"...doHomework....");//this指代的是调用doHomework方法的对象,调用该对象的名字
	}
	student.doHomework();//直接调用对象中的方法
</script>

二、对象初始化器方式

1.语法

var 对象变量名 = {//定义一个对象
	property1 : value1,//对对象中的变量进行赋值(即初始化)
	property2 : value2,, 
	propertyN : valueN,//变量和方法名和背后赋值部分用:间隔
	methodName1 : function([parameter_list]){
		//函数体
	},, //不同变量和方法体之间用逗号间隔
	methodNameN : function([parameter_list]){
		//函数体
	}
}

2.实例

<script>
	var student = {
		name : "Tom",//给变量赋值
		doHomework : function(){
			console.log(this.name + "...doHomework...");
		}
	};
	student.doHomework();
</script>

三、构造函数方法

该方法创建对象能节省代码

1.语法

function 构造函数([参数列表]){ 
	this.属性 = 属性值;this.属性N = 属性值N;
	this.函数1 = method1;this.函数N = methodN; 
}
function method1([参数列表]){
	//函数体
}
…
function methodN([参数列表]){
	 //函数体
}

或(一般用下面这种,比较节省代码)
function  构造函数([参数列表]){ 
	this.属性 = 属性值; //this不能省略this.属性N = 属性值N;
    this.函数1 = function([参数列表]){
		//函数体
    } ;this.函数N = function([参数列表]){
		//函数体
    } ;
}

2.实例

<script>
	function Student(name){//定义一个函数
		this.name = name;
		//this.name = "Tom";如果不传入name的值,可以直接赋值
		this.doHomework = function(){
			console.log(this.name+"...doHomework...");
		}
	}
	var student = new Student("Tom");//创建一个对象,将name的值传入
	student.doHomework();//调用对象中的方法
</script>

四、prototype原型方式

在声明一个新的函数后,该函数(在JavaScript中,函数也是对象)就会拥有一个prototype的属性,通过该属性可以为该函数(对象)添加新的属性和方法。
缺点:不便于为属性动态赋值

1.语法

function 对象构造器( ){
} 
对象构造器.prototype.属性名=属性值;
对象构造器.prototype.函数名 = function([参数列表]){
 	//函数体
}

2.实例

<script>
	function Student(){
		//定义一个空的新的函数,即一个新的“对象”
	}
	Student.prototype.name="Tom";//原型式必须用prototype给变量即函数赋值
	Student.prototype.doHomework = function(){
		console.log(this.name+"...doHomework...");
	}
	var student = new Student();//创建对象
	student.doHomework();//调用方法
</script>

五、混合的构造函数/原型方式

构造函数方式:便于动态为属性赋值,但是这种方式将方法也定义在了构造方法体中,使得代码比较杂乱
原型方式:不便于为属性动态赋值,但是这种方式定义的属性和方法实现了分离
所以取长补短——构造函数定义属性,原型方式定义方法。

1.语法

function 对象构造器([参数列表]){
} 
对象构造器.prototype.函数名 = function([参数列表]){
	//函数体
}

2.实例

<script>
	function Student(name){
		this.name = name;//定义一个新的函数,用函数式为变量赋值
	}
	Student.prototype.doHomework = function(){
		console.log(this.name+"...doHomework...");//使用原型式丰富方法
	}
	var student = new Student("Tom");//创建对象,将变量值传入
	student.doHomework();//调用方法
</script>

3.以上五种类型执行结果都为
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值