问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js定义类有哪些方法

发布网友 发布时间:2023-07-31 07:03

我来回答

1个回答

热心网友 时间:2024-10-24 13:30


这次给大家带来js定义类有哪些方法,js定义类的注意事项有哪些,下面就是实战案例,一起来看一下。
ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类。
js中的类,既是重点,也是难点,很多时候都感觉模棱两可。
首先强调一下js中很重要的3个知识点:this、prototype、constructor。
下面我们来总结一下定义(模拟)类的几种方法:
1.工厂模式
function createObject(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.getName = function(){
return this.name;
};
obj.getAge = function(){
return this.age;
}
return obj;
}
var obj2 = createObject("王五",19);
console.log(obj2.getName());
console.log(obj2.getAge());
console.log(obj2.constructor);工厂模式的方法创建对象,工厂模式可以根据接受的参数来创建一个包含必要信息的对象,可以无限次数的调用这个方法,每次都返回一个包含2个属性2个方法的对象。工厂模式解决了创建类似对象的问题,但没有解决对象的识别问题,即不能确定一个对象的类别,统一为Object。
2.构造函数法
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
}
Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
},
getJob:function(){
return this.job;
}
}
var p = new Person("二麻子",18,"worker");
console.log(p.constructor);
console.log(p.getName());
console.log(p.getAge());
console.log(p.getJob());构造函数的方式虽然确定了对象的归属问题,能够确定对象的类型,但构造函数中的方法需要在每个对象中都要重新创建一遍,导致一些性能问题。
3.原型模式
function Person(){
}
Person.prototype = {
constructor:Person,
name:"张三",
age:21,
job:"teacher",
getName:function(){
return this.name;
},
getJob:function(){
return this.job;
}
}
var p = new Person();
console.log(p.getName()); //张三
console.log(p.getJob()); //teacher
var p2 = new Person();
p2.name = "李四";
console.log(p2.getName()); //李四由实例代码我们可以知道,对象实例可以访问原型中的值,但不能重写原型中的值,如果对象实例中定义了和原型重名的属性,那么该属性就会屏蔽原型中的那个属性,但并不会重写。
4.封装(暂且这么叫吧)
var Dog = {
createDog:function(){
var dog = {};
dog.name = "汪汪";
dog.sayHello = function(){
console.log("Hello World!");
};
return dog;
}
};
var dog = Dog.createDog();
dog.sayHello();就是把代码都封装起来,将实例对象作为一个整体返回,有点类似于工厂模式。
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
js仿jquery步骤详解

JS中时间单位比较的方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iphone4被偷/被盗/丢失了后怎么办呢? 韩语对话:被盗的经验和防御方法 ipad2在飞机上丢失,有什么方法可以找回来吗?ipad的条码是:MC979ZP/A... ...被抓到并报案,公安机关应该怎样处理案件,被偷2万元左右的财物是否... (1/2)刚才在交车上我的钱包被偷了里面有刚办好的2万定期存单和身份证和... 老丢东西/钱如何转运 我用eXeScope修改资料后qq怎么打不开了 肚子针打完后用湿棉签按住药水会不会流出来 怎样给别人打针才不会痛? 打完新冠疫苗棉签要按压多久? JavaScript定义类或函数的几种方式小结_js面向对象 JS定义函数的几种常用方法小结 故事化的新闻报道——《呕心沥血鲟鱼梦》赏析 为什么点电脑上的图标没有反应? 2021每日晨语朝气蓬勃祝福短信 QQ游戏怎么进家族房间?家族房间在哪? QQ游戏四国军棋里怎么加入一个家族啊? qq游戏怎样加入家族?详细说明 怎么更改实名认证和平精英微信 oppo find n包装清单 青橙NX的包装清单中是否含有耳机 如何改善睡眠质量呢!? 乐悦安徽麻将这几天怎么不能玩了 乐悦安徽麻将是哪个公司开发的 怎么弄免费的QQ秀?要好看的. 怎么可以不花钱拥有好看的QQ秀 QQ秀怎么装扮才好看? 怎么自己制做一个好看的QQ秀 QQ秀除了充钱使它变好看,还可以怎样弄才能好看? 免费的好看的QQ秀怎么弄啊 电脑屏幕老是一闪一闪的是怎么回事 ...要我找一个人去提款,把钱打在他卡上在转给我,是骗子吗? ...顺便开通大额度转,也就是说一天超过5万以上,这是不是骗子... ...开通大额度转账,也就是说一天超过5万以上,是不是骗子? ...的私人微信贷款但是现在一直在叫我转钱过去是不是诈骗? 华为手机怎样黑屏后时间显示 ...勿三心二意;做人、做事当持之以恒,忌一曝十寒 绑定别人的银行卡怎么解除 该文件未能打印如何解决 梦见自己舍不得一个人的预兆 ...把滴进手机音量键里的502胶水给去处。。 不小心滴进去给粘住了... 微信怎么取消自动扣款 抖音的特别关心怎么设置 word2003纸张大小怎么设置 word2003怎么设置纸型 word2003怎么设置稿纸 头晕昏昏沉沉的有点恶心想吐吐不出而且还咳嗽 一直冒冷汗,是感冒吗... 老是头晕眼花,四肢无力,恶心想吐,又吐不出来,请问这是怎么了?_百度知 ... 今年山西理科考334能上三本吗 《画皮世界》新手提升实力必备攻略