创建javascript对象

本文深入探讨JavaScript中创建对象的八种方法,包括使用new操作符、对象字面量、工厂模式、构造函数模式、原型模式、组合使用构造函数和原型模式、动态原型模式及寄生构造函数模式,每种方法的特点及适用场景。

创建Object实例

本文实例来源于《javascript高级编程》
1、方法一:new操作符后加Object构造函数

var person = new Object();//等价于 var person = {};
person.name = "qianbei";
person.age  = 29;
person.sayName = function(){
	alert(this.name); // 被解析为person.name
}

2、方法二:使用对象字面量表示法

var person = {
	name : "qianbei",
	age : 29,
	sayName : function(){
		alert(this.name); // 被解析为person.name
	}
};

虽然构造函数或对象字面量都可以用来创建单个对象,但这些方法有一个明显的缺点,使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,人们开始使用工厂模式的一种变体。

3、方法三:工厂模式

function createPerson(name,age,job){
	var o = new Object();
	o.name = name;
	o.age = age;
	o.job = job;
	o.sayName = function(){
		alert(this.name);
	}
	return o;
}
var person1 = new createPerson("qianbei",29,"FE");
var person2 = new createPerson("chenchen",18,"FE");

工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别问题。

4、方法四:构造函数模式

function Person(name,age,job){//按照惯例,构造函数应该以大写字母开头
	this.name = name;
	this.age  = age;
	this.job = job;
	this.sayName = function(){
		alert(this.name); // 被解析为person.name
	};
}

var person1 = new Person("qianbei",29,"FE");
var person2 = new Person("chenchen",18,"FE");

要创建Person实例,必须使用new操作符,以这种方式调用构造函数实际上会经历以下4个步骤:
1) 创建一个新对象
2) 将构造函数的作用域赋给新对象(因此this就指向了这个新对象)
3) 执行构造函数的代码(为这个新对象添加属性)
4) 返回新对象

在前面例子最后,person1,person2分别保存着Person的一个不同实例,这两个对象都有一个constructor属性,该属性指向person

alert(person1.constructor == Person) //true
alert(person2.constructor == Person) //true

5、方法五:原型模式

function Person(){}
Person.prototype.name = "qianbei";
Person.prototype.age= "18";
Person.prototype.job= "fe";
Person.prototype.sayName=function(){
	return this.name;
};
var person1 = new Person();
alert(person1.age);

6、方法六:组合使用构造函数模式和原型模式(是目前使用最广泛,认同度最高的一种能够创建自定义类型的方法)

function Person(name,age,job){//按照惯例,构造函数应该以大写字母开头
	this.name = name;
	this.age  = age;
	this.job = job;
}
Person.prototype = {
	constructor : Person,
	sayName : function(){
		return this.name;
	};
}
var person1 = new Person("qianbei",18,"FE");
var person2 = new Person("chenchen",20,"FE");
alert(person1.age);
alert(person1.sayName =  person2.sayName) //true

7、方法七:动态原型模式

function Person(name,age,job){//按照惯例,构造函数应该以大写字母开头
	this.name = name;
	this.age  = age;
	this.job = job;
	if(typeof this.sayName != "function"){
		Person.prototype.sayName=function(){
			return this.name;
		};
	}
}
var friend = new Person("qianbei",18,"FE");
alert(friend.sayName());

8、方法八:寄生构造函数模式

function Person(name,age,job){
	var o = new Object();
	o.name = name;
	o.age = age;
	o.job = job;
	o.sayName = function(){
		alert(this.name);
	}
	return o;
}
var person1 = new Person("qianbei",29,"FE");
var person2 = new Person("chenchen",18,"FE");
内容概要:本文档是一份针对2025-2026年Java后端大厂面试的高频考点全面梳理,涵盖Java基础、集合框架、并发编程、JVM、Spring全家桶、MySQL、Redis、消息队列、分布式与微服务等核心技术模块。内容不仅包括经典概念辨析(如String与StringBuilder区别、HashMap底层结构),还深入源码机制与设计原理(如Spring三级缓存解决循环依赖、AOP动态代理实现),并结合实际场景探讨问题排查与技术选型(如GC调优、缓存穿透解决方案)。特别强调从“背八股”向源码理解、线上排障和设计权衡的能力转变,体现当前面试趋势的深度化与实战化。; 适合人群:具备1-3年工作经验,准备冲击中高级Java岗位的研发人员,尤其适合希望系统提升面试竞争力、深入理解主流技术底层原理的开发者。; 使用场景及目标:①应对大厂Java后端技术面试,掌握高频考点与最新趋势;②深入理解核心技术的设计动机与实现细节,如ConcurrentHashMap的线程安全机制、分布式ID生成方案对比;③提升实际问题分析与解决能力,如Full GC排查、事务失效定位等。; 阅读建议:此资源以面试为导向,兼具广度与深度,建议结合自身项目经验进行对照学习,注重理解“为什么”而非仅仅记忆结论,对关键知识点应动手验证(如ThreadLocal内存泄漏实验),并在模拟面试中强化表达逻辑。
代码下载链接: https://pan.quark.cn/s/8df2b016201b 555 芯片的引脚布局、功能特性、引脚示意图以及引脚说明是关键信息。555 芯片作为一种集成电路,具有多样化的功能特性,在定时器、定时延时控制、调光、调温、调压、调速等多种控制及计量检测领域有着广泛的应用。接下来将展示 555 芯片的引脚示意图和引脚说明: 1. 555 芯片引脚示意图:555 芯片包含 8 个引脚,具体如下: * 1 脚:地线端 * 2 脚:触发输入端 * 3 脚:输出端 * 4 脚:复位端 * 5 脚:控制端 * 6 脚:阈值端 * 7 脚:放电端 * 8 脚:电源端 2. 555 芯片引脚说明: * 1 脚:地线端,用于连接电路的负极部分。 * 2 脚:触发输入端,用于接收外部信号的输入,进而控制输出端的状态。 * 3 脚:输出端,输出高电平或低电平信号,其状态受触发器控制。 * 4 脚:复位端,当输入低电平时,输出端会输出低电平信号。 * 5 脚:控制端,用于调节输出端的状态,能够改变上下触发电平的数值。 * 6 脚:阈值端,作为上比较器的输入端,当输入高电平时,输出端会输出低电平信号。 * 7 脚:放电端,是内部放电管的输出端,其输出电平状态受触发器控制。 * 8 脚:电源端,用于连接电源的正极部分。 3. 555 芯片工作原理:555 芯片的工作原理是通过上比较器和下比较器来控制输出端的状态。上比较器的输入端位于 6 脚,而下比较器的输入端位于 2 脚。根据输入端的电平状态,输出端会输出高电平或低电平信号。 4. 555 芯片应用领域:555 芯片在各种电子产品中有着广泛的应用,例如在定时器、定时延时控制、调光、调温、调压、调速等领域。它还可以用于...
内容概要:本文提出了一种基于遗传算法的微电网调度优化方案,针对包含风能、太阳能、蓄电池和微型燃气轮机等多种分布式能源的微电网系统,构建了综合考虑经济性与稳定性的多目标优化调度模型。通过Matlab编程实现遗传算法求解,对微电网内部各单元的出力进行合理分配与协调控制,以实现运行成本最小化、可再生能源利用率最大化以及系统功率平衡和稳定性提升。文中详细阐述了系统建模过程、遗传算法的编码方式、适应度函数设计、约束条件处理机制及仿真结果分析,充分验证了该方法在降低综合运行成本、提高能源利用效率和增强系统调度灵活性方面的有效性与实用性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微电网优化调度相关研究的研究生及科研人员。; 使用场景及目标:①学习并掌握遗传算法在微电网多能源协调调度中的建模与应用方法;②复现、改进或拓展微电网经济调度模型;③为实际微电网能量管理系统的设计提供算法支持与仿真验证依据。; 阅读建议:建议读者结合提供的Matlab代码,深入理解遗传算法的种群初始化、交叉变异操作、适应度评估及收敛判断等关键环节,并可通过调整能源配置参数、负荷需求或引入新的约束条件(如碳排放、设备寿命)进行拓展研究,以深化对智能优化算法在综合能源系统中应用的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值