微语:代码适合中午敲,早晚出BUG
数组如何递归降维 JavaScript
Array.prototype.myReduce = function () {
let newArr = [];
for (let item of this) {
if (Array.isArray(item)) {
newArr = newArr.concat(item.myReduce());
} else {
newArr.push(item);
}
}
return newArr;
};
// 多维数组
let arr = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
console.log(arr.myReduce());
小程序入门教程 微信小程序
1. 微信小程序介绍
只能通过微信APP, 扫码/点击链接, 进入的特殊"网页"的集合.
无需下载安装包(扫码直用)
2. 移动端应用分类
H5APP: 使用传统WEB技术(H5+CSS3+JS), 在浏览器中运行的网页
小程序: 使用自家开发技术栈研发的小应用, 只能在特定APP中扫码/点击打开(微信小程序, 支付宝小程序)
原生APP: 需要下载安装包, 安装才能使用, 区分IOS/ANDROID ! 安装包不互通
3. 小程序的开发流程
3.1 注册小程序开发者账号
https://mp.weixin.qq.com/
3.2 下载小程序专用开发IDE-微信开发者工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
3.3 通过微信开发者工具, 新建项目
每次创建项目需要填写自己的小程序AppID
4. 小程序的核心目录
(重要)pages -- 小程序所有核心页面
utils -- 工具文件夹
.eslintrc.js -- eslint语法检测配置文件
app.js -- 入口js文件
app.json -- 全局配置
app.wxss -- 全局样式
project.config.json -- 工程配置1
project.private.config.json -- 工程配置2
sitemap.json -- 其他描述
5. 小程序的页面结构
小程序并非HTML, 所以有一套自己的开发模式和文件类型
.js -- 页面的逻辑
.json -- 页面的配置
.wxml -- 页面的结构
.wxss -- 页面的样式
6. 小程序独有常用标签
navigator: 超链接, 允许跳转到小程序的任意页面
view: 容器!! ===div
text: 文本 ===span
swiper: 轮播组件
swiper-item: 轮播的儿子
例:
<swiper>
<swiper-item>元素1</swiper-item>
<swiper-item>元素2</swiper-item>
..
</swiper>
- button: 按钮
- input: 输入框
- image: 图片
- icon: 系统送的图标
- scroll-view: 可以滚动的view容器
- map: 地图
7. 小程序的事件
小程序只有两种事件: 冒泡(bind), 非冒泡(catch)
事件类型:
- tap: 触摸
- longpress: 长按(0.35s)
- touchstart: 触摸开始
- touchend: 触摸结束
- touchmove: 触摸后开始移动
-
touchcancel: 触摸后被系统弹窗/电话等打断
绑定方式: bindtap冒泡触摸 catchtap非冒泡触摸
8. 小程序的数据驱动
8.1 把要变化的数据放入data中
data: {
name: 'zhangsan'
}
8.2 使用mustauche获取动态数据, 小程序不区分内容还是属性, 都是用{{}}获取
<view name="{{ test }}">测试{{ aa }}</view>
8.3 修改数据
this.setData({
//key要修改的key名: value新的值
name: 'lisi'
})
9. 小程序其他
底部 tabBar
自定义头部导航 navigationStyle
获取胶囊坐标 wx.getMenuButtonBoundingClientRect()
修改C盘下的User中文名文件夹 Windows教程
1.首先按Win+R快捷键,调出运行窗口,输入regedit回车打开注册表
2.依次展开注册表:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
展开ProfileList后双击打开最后一项,在右边的列表中找到ProfileImagePath选项
双击或者右击修改ProfileImagePath,将里面的中文名修改成英文,然后重启电脑
3.重启电脑后,我们打开C盘找到用户当中与我们修改之前的中文名一致的文件夹修改成我们修改后的英文名,然后重启电脑
注:亲测有效!!!
React打包白屏如何解决 React
在打包React项目的时候出现白屏了,需要在package.json中添加一行配置
"homepage":"."
homepage作用
打包时候, 自动在资源目录, 也就是引入的js和css目录前面添加设置的字符串,设置为 "."会自动在前面添加一个., 这样绝对路径就变为相对路径了.
Uniapp去掉H5标题 uniApp
需要在路由中配置
"h5":{
"titleNView":false
}
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "车行APP",
// 编译到h5平台时去掉页面标题
"h5":{
"titleNView":false
}
}
}
UniAPP工程化目录配置 uniApp
┌─components uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─hybrid 存放本地网页的目录
├─platforms 存放各平台专用页面的目录
├─pages 业务页面文件存放的目录
│ ├─index
│ │ └─index.vue index页面
│ └─list
│ └─list.vue list页面
├─static 存放应用引用静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
├─wxcomponents 存放小程序组件的目录
├─common 公共资源(自建)
├─api 请求封装(自建)
├─store 状态管理(自建)
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json 配置应用名称、appid、logo、版本等打包信息
└─pages.json 配置页面路由、导航条、选项卡等页面类信息
写出P的值 面试题
function Person(name) {
this.name = name
return 0
}
let p = new Person('Tom')
console.log(p)
结果:
{name: "Tom"}
写出下面Console.log的结果 面试题
var foo = {},F = function () {}
Object.prototype.a = 'value a'
Function.prototype.b = 'value b'
console.log(foo.a) //结果 === value a
console.log(foo.b) //结果 === undefined
console.log(F.a) //结果 === value a
console.log(F.b) //结果 === value b
流程:
-
这段代码展示了 JavaScript 中的原型链的工作原理。在代码执行过程中,首先创建了一个名为
foo
的空对象,然后定义了一个名为F
的函数。 -
接下来,通过给
Object.prototype
添加属性a
,以及给Function.prototype
添加属性b
,这些属性会被继承到foo
对象和F
函数上。 -
当我们尝试打印
foo.a
时,由于foo
对象本身没有a
属性,JavaScript 会沿着原型链向上查找,最终找到了Object.prototype
上的a
属性,因此打印结果是value a
。 -
而对于
foo.b
,由于foo
对象和Foo
函数本身都没有b
属性,于是 JavaScript 会继续向上查找,找到了Function.prototype
上的b
属性,因此打印结果是undefined
。 -
对于
F.a
,由于F
是一个函数,它本身不会继承Object.prototype
上的属性,但是由于 JavaScript 中的函数也是对象,所以它可以访问到Object.prototype
上的属性。因此打印结果是value a
。 -
最后,对于
F.b
,由于F
函数本身没有b
属性,JavaScript 会继续向上查找,找到了Function.prototype
上的b
属性,因此打印结果是value b
。