JavaScript基础

本文介绍了JavaScript的常用方法,如eval、JSON转换、编码解码等;内置对象,包括Math、String、Date、Array、json等对象的使用;高级语法块,有for循环、异常捕获块、自定义函数;还提及常用的Dom对象属性,如childeNodes、innerHTML等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 常用方法:

eval:将字符串形式的语句转换为对应的对象或者执行脚本输出,
如:eval(“document.title=‘我爱我家’”);//会执行设置文档标题为“我爱我家”
定义json对象串var strUser=‘{“user”:”dbadmin”,”name”:”管理员”}’;
var oUser=eval(‘(‘+ strUser +’)’);//注意两边要加上括号
JSON: 字符串与json的互相转换

var str1 = ‘{ “name”: “cxh”, “sex”: “man” }’;//字符串
var obj = eval(‘(’ + str + ‘)’); //字符串转对象
或者 var obj = str.parseJSON(); 
或者  var obj = JSON.parse(str);
var str = obj.toJSONString();//对象转字符串
或者var last=JSON.stringify(obj);

注:部分低版本浏览器只支持eval,兼容低版本需要引入json2.js

使用json2.js中JSON.parse(string)方法将json串转化为对象时必须外层用单引号,内层用双引号, 如果是

strUser=“{‘user’:’dbadmin’,’name’:’管理员’}”就报异常,
应该为strUser=‘{“user”:“dbadmin”,“name”:“管理员”}‘,

JSON.parse(string)这个方法也用的是eval
注:eval效率比较低
Json2.js下载地址:https://github.com/douglascrockford/JSON-js/blob/master/json2.js
(2)编码
escape: 编码一个字符串,常用于加密汉字 参数,该方法不会对 字母和数字进行编码,也不会对下面这些 符号进行编码: ± _ . *
解码是unescape

encodeURI:常用编码整个url,不编码的字符与escape不同,要多几个,为-.!~*\‘()
另对;/?: @&=+$,# 也不编码,解码是decodeURI
encodeURIComponent:常用加密一个url的参数,不加密的特殊字符有-
.!~*\‘(),解码是decodeURIComponent
总结:如果只含有”#”字符,比如有些配注站站名会有”#”,可用escape加码;如果含有”+”,则只能用encodeURIComponent加码;escape加的码无论网站web.config中配置utf-8或者gb2312都会自动解码。

1.2 内置对象

1、Math数学对象
Math.floor:返回小于等于值的最大整数,如Math.floor(“3.56”)返回3,
Math.floor(“-3.56”)返回-4
Math.ceil:返回大于等于值的最小整数,如Math.ceil(“3.56”)返回4,
Math.floor(“-3.56”)返回-3
Math.round:四舍五入取整,Math.round(“3.56”)返回4
注:使用Math内置对象也可以用with单独声明使用域来使用,如
with(Math){ var iHm=floor(“3.53”);}
Math.random:返回返回位于 0 到 1 之间的随机函数,一般跟在网页地址后来解决缓存数据不更新问题

2、String字符串对象
toUpperCase:字符串转化为大写,如”fsdfs”. toUpperCase()返回”FSDFS”
toLowerCase:字符串转化为小写,如”ABcd”. toLowerCase()返回”abcd”
indexOf:返回某子串在母串中第一次出现的索引,常用来配合!=-1来确认字符串包含,如
if(“dbaf”.indexOf(‘db’)!=-1)//代表子串存在,否则不存在
lastIndexOf:返回某子串在母串中最后一次出现的索引

3、Date日期对象
初始化:var dNow=new Date(2014,7,8);//一定要用这种格式(年,月,日),其他格式不通用,各浏览器解释不一样。假定日期对象dNow为2014年7月8日,
getFullYear:返回年,如dNow.getFullYear()返回2014
getMonth:返回月,注意获取系统时间的月份要+1,月份是从0开始的,如new Date().getMonth()要用 getMonth()+1,其他的用getMonth()
getDate:返回日,如dNow.getDate()返回8

4、Array数组对象
声明:假设要创建长度为3的3名学生姓名的数组
第1种方式
var arrStu=new Array(3);
arrStu[0]=“张三”;
arrStu[1]=“李四”;
arrStu[2]=“王五”;
第2种方式
var arrStu=new Array(“张三”,“李四”,”王五”);
第3种方式
var arrStu=[“张三”,“李四”,”王五”];

下述以第3种方式介绍方法
join:将数组中元素合并为字符串,如果不加分隔符直接合并,如 arrStu.join(‘,’)返回张三,李四,王五 arrStu.join()返回张三李四王五
push:在数组的末尾加上一个或多个元素,并且返回新的数组长度值,如 alert(arrStu.push(“赵六”))弹出4(数组的新长度),数组变成[“张三”,“李四”,”王五”,“赵六”](push方法是最常用的)
pop:移除数组中的最后一个元素并返回该元素,如 alert(arrStu.pop())弹出王五(即数组的最后1个元素),
数组变成[“张三”,“李四”]
注:pop和push配对使用
unshift:为数组的开始部分加上一个元素,并且返回该数组的新长度,如 alert(arrStu.unshift(“赵六”))弹出4(数组的新长度),数组变成[“赵六”,“张三”,“李四”,”王五”]
shift:移除数组中的第一个元素并返回该元素,如alert(arrStu.shift())弹出张三
数组变成[“李四”,”王五”]
注:shift和unshift配对使用
总结:凡是移除元素(pop和shift)的会返回该元素,凡是增加元素(push和unshift)的会返回新数组长度,其实一般返回值用的地方很少
slice:以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素, alert(arrStu.slice(1, 2))
Concat:将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

5、json对象
声明如{“属性1”:”值1”,“属性2”:”值2”…},可以解释为一组属性键值对的集合,属性也可以不加引号,值如果是字符串需要加引号,如{属性1:”值1”,属性2:值2…}
示例:

var oJson1={“name”:”张三”,”age”:20}
alert(oJson1.age);//弹出20
alert(oJson1.age+1)//弹出21

var oJson2={“name”:”张三”,”age”:“20”}
alert(oJson2.age);//弹出20
alert(oJson2.age+1)//弹出201,字符串拼接了

下面是常用操作
1.增加属性或者属性赋值
对象[“属性名”]=值 或 对象.属性名=值
如:var oJson1={“name”:“张三”,“age”:20,“dept” :“数据库”}
oJson1.dept=“技术部”;或者oJson1[“dept”]=“技术部”;
2.移除属性
delete 对象[“属性名”] 或者 delete 对象.属性名
如:delete oJson1.age 或 delete oJson1[“age”]

6、空对象
当变量a不为空,不是空串或者不是未定义执行某个操作,if(a){…}
不用复杂写法if(a!=null||a!=“”||a!=undefined)

1.3高级语法块

(1)for循环
1.array数组操作
假设声明数组为arrTest

普通写法:
for(var i=0;i<arrTest.length;i++) {…arrTest[i]…}
高级写法:
for(var i in arrTest){…arrTest[i]…}

2.json对象操作
假设声明json对象为oJson

for(var p in oJson){…oJson[p]…}

(2)try…catch{}异常捕获块

try{	…   }catch(e){   alert(e.message);  }

(3)自定义函数

function 函数名(属性1, 属性2,......属性N)
	{ 
		this.属性1=属性值1; 
		this.属性2=属性值2;
		this.属性n=属性值n; 
		this.方法名1=函数名1; 
		this.方法名2=函数名2;
	}
	比如定义1个员工类,
	function Employee(bno,name,dept,age)
{
	this.bno=bno;//员工编号
	this.name=name;//员工姓名
	this.dept=dept;//员工部门
	this.age=age;//员工年龄
	this.GetBirthYear=function() //计算该员工的出生年份
	{
		var NowYear=new Date().getFullYear();
 		return NowYear-this.age;
	}
	this.BirthYear=this.GetBirthYear();//调用自身函数设置下出生年份
}
var employee1=new Employee(‘01’,‘张三’,‘技术部’,23);//声明1个员工对象
alert(employee1.BirthYear);//弹出1991

这种声明方法参数限制比较死,参数个数和顺序都比较固定,如果使用json格式就比较灵活。

function Employee(options){
	this.options = 
	{
		bno:	‘',
		name:	‘’,
		dept:	‘’,
		age:     20
	}
	Object.nadExtend(this.options,options||{});//扩展默认的属性
	…}
Object.nadExtend = function(destination, source) {//扩展
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

//注意:这个方法并不是给Object扩展了个方法
内部方法也可以使用对象属性prototype(用来返回对象类型原型的引用)来动态添加
下面我们看两个经典的prototype属性的使用示例

1、4常用的Dom对象属性

childeNodes : 返回所有子节点对象
var mylist=document.getElementById(“mylist”). childNodes;
innerHTML:严格的讲它并不是DOM
document.getElementById(“aaa”).innerHTML= “您好";
Style:这是一个极其重要的属性,可以获取并修改每个单独的样式.
document.getElementById(“aaa”).style. backgroundColor="#cccccc“
firstChild 返回第一个子节点 lastChild 返回最后一个子节点
parentNode 返回父节点的对象 nextSibling 返回下一个兄弟节点的对象
previousSibling 返回前一个兄弟节点的对象 nodeName 返回节点的HTML标记名称,使用英文的大写字母,如P, FONT

内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度与训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值