Javascript创建类的七种方法
/* 第一种定义类的方法 */
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创建类的七种方法相关推荐
- 创建线程的七种方法 (图解 全网最全最详细)
本文创建于 2021年5月14日 作者:Xiang 参考文献:创建多线程的四种方法 创建线程的8种方法 创建匿名线程的5种方法 特别鸣谢 文章目录 1.什么是多线程 2.线程状态 3.线程同步方法 4 ...
- Java创建线程的七种方法,全网最全面总结~
目录 前言 一.继承Thread,重写run方法 二.实现Runnable接口,重写run方法 三.使用匿名内部类创建 Thread 子类对象 四.使用匿名内部类,实现Runnable接口 五.lam ...
- 线程 --- 创建线程的七种方法
目录 方法1 :继承Thread类,重写run方法,调用 start 方法启动 方法2 :实现Runnable接口,重写run方法,调用 start 方法启动 方法3:匿名内部类 创建Thread 子 ...
- JavaScript创建元素的三种方法特点及对元素的操作
用js代码创建或添加html元素有三种方法 document.writer() document.write("<p>我就是p1</p>"); 复制代码 注 ...
- javscript 创建类的三种方法【转】
http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 转载于:https://www. ...
- javascript中如何创建数组-与创建数组的几种方法
javascript中数组的创建方式有3种,我只学了3种,还有没有其他方法我也不知道哈.... 下面我们来看看 js中创建数组的其中一种方法. //先写一种最常规的的创建JS数组的方法 var arr ...
- javascript创建类_如何使用JavaScript创建吹气效果
javascript创建类 Have you ever wondered how you can create a realistic air blowing effect with JavaScri ...
- JQuery实现页面跳转 页面跳转的七种方法
<mce:script type="text/javascript"><!-- $(function(){ var pn = $("#gotopagen ...
- Java动态加载一个类的几种方法以及invoke
一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...
最新文章
- img标签 文件不存在_HTML常用标签
- java reference_java中的4种reference的差别和使用场景(含理论、代码和执行结果)...
- system()函数实现
- 污水处理中php是什么药剂,污水处理药剂有哪些?
- obj c和java_PKCS1-padding / RSA加密ios objc和java之间的区别
- Mvc过滤器的使用【转载】
- #ifndef的作用
- 网页边框和网页文字阴影
- 怎么在activity里面操作listView的item里的组件的点击事件
- 自定义对话框(jDialog)
- 思科警告:“关键更新”钓鱼攻击窃取用户 Webex 凭证
- pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
- 神经网络进行自然语言处理最佳实践
- PHP重置static静态变量
- python循环语句总结
- Dell R410 BIOS 升级方法
- 亚马逊、速卖通、temu、国际站卖家如何做自养号测评?干货分享
- Elasticsearch2.3.4集群安装指南
- Clickhouse 分布式子查询——global in/join(慎用慎用)
- MFC SplitterWnd