Javascript中Class的定义

本文探讨了JavaScript中创建对象的不同方法,包括工厂方法、构造函数法、混合构造函数/原型方式等,并介绍了一种自定义类定义的方法。
/**
* 工厂方法:
* 存在问题:重复创建对象eat
*/
function CreatePeople(name){
var people=new Object();
people.name=name;
people.eat=function(){
alert(this.name+' is eating !!')
};
return people;
}
/**
* 构造函数法:
* 存在问题:重复创建对象eat
* 使用new 来创建对象,如:var p=new People('saber')
* 在执行第一句代码前,先创建一个对象(并返回,所以构造函数最后无须return),只有用this才能访问该对象,
*
*/
function People(name){
this.name=name;
this.eat=function(){
alert(this.name+' is eating !!')
};
}
/**
* 混合的构造函数/原型方式(推荐)
*/
var People1=function (name){
this.name=name;
}
People1.prototype={
eat:function(){
alert(this.name+' is eating !')
}
}
/* 自定义构造函数为:initialize
* 在使用new创建对象的时候,执行initialize函数,
*/
var People11=function (){
this.initialize.apply(this, arguments);
}
People11.prototype={
initialize:function(name){
this.name=name;
alert(' Initializing Ok !!');
},
eat:function(){
alert(this.name+' is eating !')
}
}
/* 有以上基础,如果我们要以一种统一的方式来定义类,该如何呢?
* 像java中定义类都采用Class关键字一样,而在JS中,没有类这个概念,
* 那么我们首先声明一个对象MyClass
*/

var MyClass=function(){
return function(){//闭包
this.initialize.apply(this, arguments);
}
}
/*
* 定义类:
*/
var ClassOne=MyClass();
ClassOne.prototype={
initialize:function(name){
this.name=name;
alert(this.name+' initializing Ok !')
},
methodOne:function(){
alert("My name is:" + this.name);
}
}

var ClassTwo=MyClass();
ClassTwo.prototype={
initialize:function(name){
this.name=name;
},
methodTwo:function(){
alert("My name is:" + this.name);
}
}

/**
* 采用prototype.js,它的方法和我们上边的一样:
* var Class = {
* create: function() {
* return function() {
* this.initialize.apply(this, arguments);
* }
* }
*}
*/
var People2=Class.create();
People2.prototype={
//自定义的构造函数:initialize
initialize:function(name,sex){
this.name=name;
this.sex=sex;
},
eat:function(){
alert(this.name+' is eating ');
},
showSex:function (){
alert(this.name+'\'s sex is :'+this.sex);
}
}
基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问题的研究与实现,重点利用Matlab进行算法编程和仿真。p-Hub选址是物流与交通网络中的关键问题,旨在通过确定最优的枢纽节点位置和非枢纽节点的分配方式,最小化网络总成本。文章详细阐述了粒子群算法的基本原理及其在解决组合优化问题中的适应性改进,结合p-Hub中转网络的特点构建数学模型,并通过Matlab代码实现算法流程,包括初始化、适应度计算、粒子更新与收敛判断等环节。同时可能涉及对算法参数设置、收敛性能及不同规模案例的仿真结果分析,以验证方法的有效性和鲁棒性。; 适合人群:具备一定Matlab编程基础和优化算法理论知识的高校研究生、科研人员及从事物流网络规划、交通系统设计等相关领域的工程技术人员。; 使用场景及目标:①解决物流、航空、通信等网络中的枢纽选址与路径优化问题;②学习并掌握粒子群算法在复杂组合优化问题中的建模与实现方法;③为相关科研项目或实际工程应用提供算法支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现逻辑,重点关注目标函数建模、粒子编码方式及约束处理策略,并尝试调整参数或拓展模型以加深对算法性能的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值