/* 第一种定义类的方法 */
var cls = new Object();
cls.name = "wyf";
cls.showName = function(){
console.log(this.name);
}
cls.showName();

/* 第二种定义类的方式 */
function MyCls(){
var instance = new Object();
instance.name = "wyf";
instance.showName = function(){
console.log(this.name);
}
return instance;
}
var cls = new MyCls();
cls.showName();

/* 第三种定义类的方式,构造函数方式 */
function Cls(name){
this.name = name;
this.showName = function(){
console.log(this.name);
}
}
var cls = new Cls("wyf");
cls.showName();
var cls1 = new Cls("zz");
cls1.showName();
//此种方式和前两种方式有共同的缺点就是 每个对象都会生成showName方法,造成了内存的浪费 。

/* 第四种定义类的方法,原型方法 */
function Cls(){}
Cls.prototype.name = "wyf";
Cls.prototype.showName = function(){
console.log(this.name);
}
var cls = new Cls();
cls.showName();
//此种方法的缺点是,每个对象都指向了内存中同一个属性的地址,修改一个对象的属性值,其它对象的同一个属性的属性值都会变化。

/* 第五种创建类的方法:结合构造函数和原型方法 */
function Cls(name){
this.name = name;
}
Cls.prototype.showName = function(){
console.log(this.name);
}

var cls = new Cls("wyf");
cls.showName();
var cls1 = new Cls("zz");
cls1.showName();
cls.name = "dd";
cls.showName();
cls1.showName();

/* 第六种创建类的方法:Object.create() */
var Cls = {
name:"wyf",
showName:function(){
console.log(this.name);
}
};

var cls = Object.create(Cls);
cls.showName();

var cls1 = Object.create(Cls);
cls1.name = "test";
cls1.showName();

cls.name = "aa";
cls.showName();
cls1.showName();
//此种方法不能实现私有属性和私有方法,实例对象之间也不能共享数据,对"类"的模拟不够全面。

/* 第七种创建类的方法:极简主义法 */
var Cls = {
age:20,//共有属性
createInstance:function(){
var cls = {};
var i = 0;//私有方法
cls.name = "wyf";
cls.showName = function(){
console.log(this.name + " " + i);
}
return cls;
}
}

var cls = Cls.createInstance();
cls.showName();
var cls1 = Cls.createInstance();
cls1.showName();
cls.name = "dd";
cls.showName();
cls1.showName();
//此种方式容易理解,结构清晰。其实此种方式和第二种方式一样。在每个对象内部都生成了一个showName方法。

转载于:https://www.cnblogs.com/wyf-gis/p/4551719.html

Javascript创建类的七种方法相关推荐

  1. 创建线程的七种方法 (图解 全网最全最详细)

    本文创建于 2021年5月14日 作者:Xiang 参考文献:创建多线程的四种方法 创建线程的8种方法 创建匿名线程的5种方法 特别鸣谢 文章目录 1.什么是多线程 2.线程状态 3.线程同步方法 4 ...

  2. Java创建线程的七种方法,全网最全面总结~

    目录 前言 一.继承Thread,重写run方法 二.实现Runnable接口,重写run方法 三.使用匿名内部类创建 Thread 子类对象 四.使用匿名内部类,实现Runnable接口 五.lam ...

  3. 线程 --- 创建线程的七种方法

    目录 方法1 :继承Thread类,重写run方法,调用 start 方法启动 方法2 :实现Runnable接口,重写run方法,调用 start 方法启动 方法3:匿名内部类 创建Thread 子 ...

  4. JavaScript创建元素的三种方法特点及对元素的操作

    用js代码创建或添加html元素有三种方法 document.writer() document.write("<p>我就是p1</p>"); 复制代码 注 ...

  5. javscript 创建类的三种方法【转】

    http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 转载于:https://www. ...

  6. javascript中如何创建数组-与创建数组的几种方法

    javascript中数组的创建方式有3种,我只学了3种,还有没有其他方法我也不知道哈.... 下面我们来看看 js中创建数组的其中一种方法. //先写一种最常规的的创建JS数组的方法 var arr ...

  7. javascript创建类_如何使用JavaScript创建吹气效果

    javascript创建类 Have you ever wondered how you can create a realistic air blowing effect with JavaScri ...

  8. JQuery实现页面跳转 页面跳转的七种方法

    <mce:script type="text/javascript"><!-- $(function(){ var pn = $("#gotopagen ...

  9. Java动态加载一个类的几种方法以及invoke

    一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...

最新文章

  1. img标签 文件不存在_HTML常用标签
  2. java reference_java中的4种reference的差别和使用场景(含理论、代码和执行结果)...
  3. system()函数实现
  4. 污水处理中php是什么药剂,污水处理药剂有哪些?
  5. obj c和java_PKCS1-padding / RSA加密ios objc和java之间的区别
  6. Mvc过滤器的使用【转载】
  7. #ifndef的作用
  8. 网页边框和网页文字阴影
  9. 怎么在activity里面操作listView的item里的组件的点击事件
  10. 自定义对话框(jDialog)
  11. 思科警告:“关键更新”钓鱼攻击窃取用户 Webex 凭证
  12. pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
  13. 神经网络进行自然语言处理最佳实践
  14. PHP重置static静态变量
  15. python循环语句总结
  16. Dell R410 BIOS 升级方法
  17. 亚马逊、速卖通、temu、国际站卖家如何做自养号测评?干货分享
  18. Elasticsearch2.3.4集群安装指南
  19. Clickhouse 分布式子查询——global in/join(慎用慎用)
  20. MFC SplitterWnd

热门文章

  1. python实现交并比IOU
  2. OpenCV实现最大最小距离聚类算法
  3. 在jenkins上配置Android项目(git管理,gradle构建)
  4. 使用View的getWidth(),getHeight()方法返回0的问题
  5. 存储过程Procedure
  6. 51nod 1574 排列转换
  7. 一些常被你忽略的CSS小知识
  8. 赣南师范学院数学竞赛培训第02套模拟试卷参考解答
  9. UOJ #585. 新年和多米诺
  10. RDS使用只读副本和多AZ的区别在于数据复制的机制