JS基础(2)

【20190530】
15.类型转换
1.“constructor属性”
如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。
可以用constructor返回变量的构造函数,Array会返回Array(){[native code]}
2.当输出一个变量时,会自动调用toString方法。
“判断一个变量是否存在,不要使用if(a),这样当变量未声明时会出错???建议使用if(typeof a !=“undefined”)” //我好像这么用过一次。。。
16.正则式RegEx
语法:
“/正则表达式主体/修饰符(可选)”
//正则式用来校验输入合法性
【20190531】
17.变量提升
JS的变量会hoisting–就是变量的声明会自动提升到代码顶部,“但是初始化不会”,有时会出错。
//建议在代码开始处声明变量
18.严格模式
“use strict”—不允许未声明的变量
/*
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
*/
“use strict” 指令只允许出现在脚本或函数的开头。
在严格模式下。很多操作是不允许的,比如删除,强制写入,this

19.表单
1.表单验证
输入栏中包含这个属性会进行自动验证 “不能为空” required=“required”

 /*
 使用required在初始化页面中会出现问题,“,,,受到invalid伪类的影响???喵”
 所以正确的使用应该是在外加一层判断
 例如当提交失败以后
 */
 。。。很多属性验证
 2.form验证
 onsubmit="return validateForm()"//使用的是return的方法,这样避免了校验失败后仍然 执行函数,onsubmit这个属性本身是一个方法
 e.g.
 onsubmit:function()=>{return submitEvent();}

 3.使用标签属性来验证
   使用自带方法进行验证  e.g.Object.checkValidity();

【20190605】
20.跨域"同源策略"
对于域名/端口/协议都一致的就是"同源"
解决:jsonp方式。。。
通过script标签中src可以访问外域,拼接一个标签并且以转换为回调函数
/*原生JS实现

 /jquery实现
 $.ajax({
    url: 'http://www.demo.com:8080/login',
    type: 'get',
    dataType: 'jsonp',  // 请求方式为jsonp
    jsonpCallback: "onBack",    // 自定义回调函数名
    data: {}
});

/vue实现
this.$http.jsonp('http://www.domain2.com:8080/login', {
params: {},
jsonp: 'onBack'

}).then((res) => {
console.log(res);
})

原文:https://blog.csdn.net/eeeecw/article/details/80600488

*/

21.伪协议
用于取消标签的默认行为
e.g.
取消掉了点击a标签的动作
!!!取消掉了点击a标签的动作 “void函数???”----当函数没有返回值时,使用这个默认返回undefined
/*
javascript:void(0)—方法理论上是一个死循环,设置为href的链接时能够保证不会任意跳转,设置相应的事件后,可以让满足条件后的href也更新为目的链接。

尤其是在ajax请求时,最好这样进行设置!
*/

22.API验证
1.暂且将API理解为自带的或者注入的接口方法,使用这个验证类似于一种"匿名验证",例如,使用checkValidity(),默认返回false,当有误时还会提示"错误detail"(validationMessage)
2.action是一个类似于href的属性,设置为#时会提交到当前页面,就是刷新页面。
3.

【20190612】
23.http方法
常见的由restful制定的method有get,post,put,delete。。。
这些其实只是为了规范,并没有实质的区别。基本上使用GET和POST就可以操作数据。
还需要注意一下post不是幂等的。来源 https://blog.csdn.net/f45056231p/article/details/84974066
【20190618】
24.垃圾回收
后台引擎会"定时"“自动"调取垃圾回收器。//当没有一个变量指向这个内存(引用这个对象)
25.同步异步多线程
同步,在主线程中排队;异步,在任务队列里排队;同步任务就是没有视为异步任务的异步执行
js必须是单线程的,允许脚本进行多线程操作的前提是,不操作DOM。
//异步执行
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个"任务队列”(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

	--------------------- 
	作者:WebCallMeKing 
	来源:CSDN 
	原文:https://blog.csdn.net/qq_36995542/article/details/80007381 
	版权声明:本文为博主原创文章,转载请附上博
    文链接!
"多线程实现":==worker()
 https://www.jianshu.com/p/9ea0801886f2
 步骤:调用worker(URL),以http形式启动。vscode默认的file,需要安装http-server来使用http协议。
 要求主线程与子线程的脚本同源。不跨域。
 **不允许操作dom,通信是禁止的,alert什么也是禁用的,只能通过postMessage和onmessage,子线程脚本不允许操作主线程脚本的dom。
 主要就是用于处理大型运算时候,不会阻塞主线程。
 "worker优点--场景"
 /*
    用来进行庞大的计算
	可以在worker中通过importScripts(url)加载另外的脚本文件
	可以使用 setTimeout(), clearTimeout(), setInterval(), and clearInterval()
	可以使用XMLHttpRequest来发送请求
	可以访问navigator的部分属性
	
	作者:楼下的黑猫不太冷
	链接:https://www.jianshu.com/p/9ea0801886f2
	来源:简书
	简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
 */

 "navigator"--Navigator 对象包含有关浏览器的信息。**worker线程可以调用这些对象。
 "location"--Location 对象包含有关当前 URL 的信息。Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问。
		包括有url的锚,href,host,port。。。信息
 "这些都属于browser对象"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值