首页 > 其他分享 >JS常用模式

JS常用模式

时间:2022-12-14 10:00:45浏览次数:55  
标签:function 常用 name age 模式 JS Person Jack sayName

1.原始模式

//1.原始模式,对象字面量方式

var person = {
	name: 'Jack',
	age:18,
	sayName:function(){alert(this.name);}
}
//2.原始模式,Object构造函数方式
var person = new Object();
person.name = 'Jack';
person.age = 18;
person.sayName = function (){
	alert(this.name)
}
  • 显然,当我们要创建批量的person1、person2....时,每次都要敲很多代码,太过繁琐,不方便,然后就有了批量生产的工厂模式。

2.工厂模式

//2.1工厂模式,定义一个函数创建对象

function creatPerson(name,age){
	var person = new Object();
	person.name = age;
	person.sayName = function(){
	alert(this.name)
	}
	return person
}

工厂模式就是批量化生产,简单调用,但是由于工厂模式不能识别这个对象到底是什么类型,所以每次都要创建一个独立temp对象,代码臃肿。

3.构造函数

//3.1构造函数模式,为对象定义一个构造函数

function Person (name,age){
	this.name = name;
	this.age = age;
	this.sayName = function(){
	alert(this.name)
	}
}
var p1 = new Person('Jack', 18);//创建一个P1对象
Person('Jack',18);
//属性方法都给window对象,window.name = 'Jack', window.sayName()会输出Jack
### 4.原型模式
//4.1原型模式,直接定义prototype属性
function Person(){}
Person.prototype.name = 'Jack';
Person.prototype.age = 18;
Person.prototype.sayName = function(){
	alert(this.name)
}

//4.2原型模式,字面量定义方式
function Person() {}
Person.prototype = {
	name: 'Jack',
	age: 18,
	sayName: function(){alert(this.name)}
}
var p1 = new Person(); //name = 'Jack'
var p2 = new Person(); //name = 'Jack'
  • 这里需要注意的是原型属性和方法的共享,即所以实例中,都只是引用原型中的属性方法,任何一个地方产生的改动会引起其他实例的变化。

5.混合模式(构造+原型)推荐

//5.1原型构造组合模式
function Person (name,age){
	this.name = name;
	this.age = age;
}
Person.prototype = {
	hobby:['running','football'];
	sayName:function(){alert(this.name)};
	sayAge:function(){alert(this.age)}
}
var p1 = new Person('Jack',20);
//p1:'Jack',20;__proto__:['running','football'],sayName,sayAge
var p2 = new Person('Mark', 18)
//p1:'Mark',18;__proto__:['running','football'],sayName,sayAge

标签:function,常用,name,age,模式,JS,Person,Jack,sayName
From: https://www.cnblogs.com/huayang1995/p/16981316.html

相关文章

  • JS控制元素的显示和隐藏
    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位。方法一:document.getEle......
  • 设计模式 学习目的 举例:装饰器模式和代理模式
    1.装饰器模式和代理模式  2.学习目的 ......
  • not JSON serializable解决方法
    问题描述:Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。json.dumps()#将Python中的对象转换为JSON中的字符串对象json.loads()#将JSON中的字......
  • 如何使用 System.Text.Json 序列化 DateTimeOffset 为 Unix 时间戳
    在.NET中,日期和时间通常使用DateTime或DateTimeOffset来表示。这两种数据类型都可以表示日期和时间,但它们之间有一些明显的区别。DateTime是不带时区信息的,而DateT......
  • Docker 安装,常用命令
    安装Docker官方所有操作系统安装教程:InstallDockerEngineonCentOS|DockerDocumentation,其中CentOS安装docker引擎的代码:安装yum-utils,配置库的地址sudoyuminst......
  • 处理js小数精度计算问题
    //num1num2传入两个值symbol+-*/符号functionamend(num1,num2,symbol){varstr1=num1.toString(),str2=num2.toString(),result,str1Length,str2Length//解......
  • Python中json.dump()和json.dumps()的区别
    一、图解json.dumps(dict,indent):将Python对象转换成json字符串 json.dump(dict,file_pointer):将Python对象写入json文件  二、json.dumps()用法1、用法json.d......
  • 卸载 nodejs 时报错 you must be an administrator to remove this application 的解
    这是在win11下报的错,要不怎么说win11就是个笑话。我是这么解决的:首先找到原始的安装包。再以管理员身份打开cmd(怎么操作?先打开一个普通的cmd,然后按住ctl+shift......
  • SAP根据源码导入/ui2/cl_json类
    之前我都是用CALLTRANSFORMATIONid方式来解析json数据的,结果发现解析出来的的数据有问题。无奈之下只好使用/ui2/cl_json类方法了,结果发现SAP版本不够,没有这个方法,网上......
  • Proj4.js使用初步入门
    一、基础知识在正式使用Proj4.js时,我们首先需要了解下有关各种投影的参数定义(例如:椭球长半轴、扁率、原点纬线、中央经线、两条标准纬线、东偏移量、北偏移量和单位等),具......