【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对象"