JavaScript-创建对象的N种方式

举报
搞前端的半夏 发表于 2021/10/24 23:15:29 2021/10/24
【摘要】 1. 对象字面量var obj={ name:'syl', height:'175', say:function(){ console.log('hello'); }}缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高 2. 内置构造函数2.1 直接使用Object();var obj=new Object({ name:'sy...

1. 对象字面量

var obj={
    name:'syl',
  	height:'175',
    say:function(){
        console.log('hello');
    }
}

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

2. 内置构造函数

2.1 直接使用Object();

var obj=new Object({
    name:'syl',
    height:'175',
    say:function(){
        console.log('hello');
    }
});

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

2.2 封装Object()—工厂模式

function createObj(name,height){
	var obj=new Object({
	    name:'syl',
	    height:'175',
	    say:function(){
	        console.log(this.name);
	    }
	});
	return obj;
}

缺点:对象无法识别,因为所有的实例都指向一个原型。

3. Object.create()

 var p = {
    name:'syl',
    height:'175',
    say:function(){
        console.log(this.name);
    }
};
var obj = Object.create(p);

4 构造函数

function P(name,height){
	this.name=name;
	this.height=height;
	this.say=function(){
		console.log(this.name);
	};
}
var obj=new P('syl','175');	
obj.sayHeight()=function(){
	console.log(this.height);
}

缺点:构造函数中定义函数,那么每次创建对象,都会重新创建该函数,这样会导致全局变量增多。

原型

function P(name,height){
	this.name=name;
	this.height=height;
}
P.prototype.say=function(){
	cosole.log(this,name);
}

var obj=new P('syl','175');	
p.say();

将函数放到原型中,解决了构造函数方法的缺点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。