今天,是JavaScript回炉的第六十四天
代理模式是构建一个代理对象,这个代理对象会对访问目标对象的请求进行处理,再把处理结果交给本体对象。
//代理模式
//姓名校验
let myName = (function(){
//正确与否写入前端的span
let form = document.getElementById('form01').children[2];
//闭包并获取span的内容进行展示
return{
name:function(str){
form.innerHTML = str;
}
}
})();
//代理姓名函数的判断
let modifyName = (function(){
//闭包
return{
//获取前端输入的内容
name:function(str){
//正则表达式中文字符2至4个
let res = /^[\u4e00-\u9fa5]{2,4}$/;
//判断正则表达式是否正确
if(res.test(str)){
myName.name('正确')
}else{
myName.name('错误,名字填写为2至4个中文字符')
}
}
}
})();
//代理模式
//年龄校验
let myAge = (function(){
//获取前端的span
let form = document.getElementById('form01').children[6];
//闭包并获取span的内容进行展示
return{
age:function(str){
form.innerHTML = str;
}
}
})();
//代理年龄的函数
let modifyAge = (function(){
//闭包
return{
//获取前端输入年龄的内容
age:function(str){
//首先,判断年龄是否超过120岁,我印象中全世界好像有一个活到了119岁
if(Number(str) < 120 && Number(str) > 0){
//正则表达式,这里首先第一个数是因为不能为0岁,因为不符合常识
res = /^[1-9]||[0-9]{1,2}$/
if(res.test(str)){
myAge.age('正确');
}else{
myAge.age('错误');
}
}else{
myAge.age('年龄不能大于120岁并且不能小于等于0岁');
}
}
}
})();
//光标移动后获取input内容
document.getElementById('input01').onblur = function(){
let content = document.getElementById('input01').value;
//传值给代理姓名函数,并由代理姓名函数校验完成后传递给姓名校验函数
modifyName.name(content)
}
//光标移动后获取input内容
document.getElementById('input02').onblur = function(){
let content = document.getElementById('input02').value;
//传值给代理年龄函数,并由代理年龄函数校验完成后传递给年龄校验函数
modifyAge.age(content)
}
JavaScript 作用域和作用域链
作用域:ES5 中只存在两种作用域,即全局作用域和函数作用域;在 JavaScript 中,我们将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套子作用域中根据标识符名称进行变量(变量名或者函数名)查找 。
作用域链:当访问一个变量时,编译器在执行这段代码时,会首先从当前的作用域中查找是否有这个标识符。如果没有找到,就会去父作用域查找,如果父作用域还没找到继续向上查找,直到全局作用域为止。而作用域链,就是由当前作用域与上层作用域的一系列变量对象组成,它保证了当前执行的作用域对符合访问权限的变量和函数的有序访问。
#JavaScript#
安装Node.js之后,有不少好处,比如临时搭建个HTTP服务。
想要在局域网给同事分享文件,不需要特别的工具,也不需要配置路径。
只要在所在路径下执行一条http-server命令,就可以建好HTTP服务。
同事们通过浏览器,访问下载分享的文件。
完事后,再Ctrl+C关闭命令行就可以了。
第一次使用的时候,本地可能没有。
只需用npm install http-server安装一次,就可以非常方便地使用。
整个过程,完全都是无脑操作。
有了Node.js,web开发和使用的体验大大提升。
Neutralino.js 4.7.0版本发布了,它是一个轻量级跨平台桌面应用开发框架。它的界面编写也是采用了前端技术(HTML/CSS/Javascript),但是与Electron项目所不同的是,它没有包含Chromium和Node.js,那样会导致程序的极度膨胀。
Neutralino.js采用操作系统自带的Web浏览器组件,这也是Tauri框架所采用的策略,在Windows上可以使用WebView2,在Linux上可以使用gtk-webkit2等,这样就大大减少了生成二进制文件的大小。
Neutralino.js如何访问本地接口呢?它为开发者提供了一个Javascript客户端库,在这个库中,你可以操作文件系统、进行事件处理、进行数据存储、剪切板操作等等。
项目地址: 网页链接
#neutralinojs# #桌面应用开发# #跨平台应用开发#
当激活后,这些功能可以向微软和Google发送数据。传送的信息取决于你在特定网站上填写的表格,这意味着你分享的信息越多填写的表格字段越多,在激活增强拼写检查功能时可能会向这些公司发送的数据越多。如你正在访问的网站可能要求你提供个人身份信息(PII)像你的全名、家庭住址、电子邮件地址、社会安全号、护照号码、驾驶执照号码、信用卡号码、出生日期等。更糟糕的是,你的密码也可能被传送到微软和Google,根据otto-js研究小组的说法,称这个过程为“拼写劫持”。
cnBeta
安全公司发警告:不要激活Edge、Chrome的增强拼写检查功能
VR开发框架aframe,为VIVE、Rift、Daydream、GearVR和Cardboard等头显设备构建VR应用程序。没有头显或控制器也不要紧,aframe可以在标准桌面和智能手机上运行。
aframe构建在three.js之上,为它提供了声明式、可组合和可复用的实体组件结构。在通过HTML使用aframe的同时,开发者可以无限制访问JavaScript、DOM APIs、three.js、WebVR和WebGL。
aframe虽然使用了DOM,但它并非浏览器布局引擎,因而性能是重中之重。它在高度交互的WebVR体验上经过了实战测试。
aframe的内置组件包括了几何、灯光、材质、动画、模型、位置音频和跟踪控制器,并使用粒子系统、物理、多用户、海洋、山脉、语音识别或传送等社区组件更进一步。
项目已在GitHub上获得了14.5k的Stars,并于2月4日更新了v1.3.0。
GitHub地址:网页链接
开源协议:MIT license