#1
Page()函数传入的是一个对象
对象放在{}里
对象:{
名字:值,
名字:值,
……
}
这个传入Page的对象是this
传入Page的对象里定义的函数都是this.function。
在对象中声明函数:
{
functionA: function() {} //名字:值
or
functionA() {} //es6新增
}
对象外声明函数的话)函数通过关键字 function 定义
function name(参数 1, 参数 2, 参数 3) {
要执行的代码
}
js里函数是一等公民!如下myFunction独立存在(不用依附于某个对象)
var myFunction = function (a, b) {return a * b};//定义函数,写法等价于function name(){}
var x = myFunction(4, 3);//调用函数
this.setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。
#var that=this;
在javascript语言中,this代表着当前的对象,即当前操作的dom元素的对象,它在程序中随着执行的上下文随时会变化,即随着操作不同的dom对应的数值会对应发生变化。
# 如果我要在一个page上获取今天的日期信息:
Page({
/**
* 页面的初始数据
*/
data: {
date:{}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log("---CalendarPageOnLoad---")
var today = new Date();
var weeks = ["日", "一", "二", "三", "四", "五", "六"];
var th="th";
if (today.getDate()%10==1){th="st";}
if(today.getDate()%10==2){th="nd";}
if(today.getDate()%10==3){th="rd";}
this.setData({
date:{
year:today.getFullYear(),
day:today.getDate(),
month:today.getMonth()+1,
weekday: weeks[today.getDay()],
th:th
}
})
}
# app.js 如果我想在进入小程序之后获取用户信息:
wx.login({
success:res=>{
wx.getUserInfo({
success: res => {
this.globalData.userInfo = res.userInfo
console.log(this.globalData.userInfo)//AppData监视窗口好像只显示page的数据
}
})
console.log("---LoginSucceed---")
}
})
this.globalData = {
userInfo:null,
}
# App()注册小程序;Page()注册页面。page.js会覆盖app.js。page要得到app的数据需要const app = getApp()。
# 底部tabBar
"tabBar":{
"list":[
{
"pagePath": "",
"iconPath": "",
"selectedIconPath": ""
},
{
"pagePath": "",
"iconPath": "",
"selectedIconPath": ""
}
]
},
# css3弹性盒子
弹性盒子只定义了弹性子元素如何在弹性容器内布局。
子元素居中:
display: flex; /*启用flex弹性布局*/
justify-content: center;
align-items: center;
横向布局&纵向布局:
display: flex;
flex-direction:row;
flex-direction:column;
横/纵轴上的位置(靠左/中/右)
justify-content: ...; 横轴布局
align-item: ...; 纵向布局
值:flex-start/flex-end/center/space-between/space-around
一定要先设置了width和height才生效!
# css控件位置
position: absolute/relative;
top/left/right/down:..;
# 引入外部js
外部js记得暴露接口
扫描二维码关注公众号,回复:
10474024 查看本文章
module.exports={};
引用module:
var x = require('url');
# JSON对象和js对象的转换
json语法:
数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组
json对象==》json字符串=》js对象
var str = JSON.stringify(json对象);
var obj = JSON.parse(str);
# js随机数
Math.random();//返回0~1的随机数
Math.floor(x);//对x向下取整
////从数组中随机取出一个元素////
var item = items[Math.floor(Math.random()*items.length)];
////从数组中随机取几个元素////
可以想一下
无法排序的数组洗牌
可以排序的数组看取哪个
骚操作取整(去掉小数部分):
~~(x);
# shuffle算法
////js对象Array的一些方法////
splice(index,要删除的数目,要替换的元素(可选)); // 删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
push();// 向数组的末尾添加一个或更多元素,并返回新的长度。
- 洗牌嘛就是把一个数组里的元素一个个随机地放到另一个里。复杂度O(n^2)
function shuffle(a){
var b = [];
while (a.length) {
b.push(a[Math.random()*a.length]);
a.splice(Math.random()*a.length, 1);
}
return b;
}
- Fisher–Yates Shuffle,复杂度 O(n)。
从 后/前 遍历数组元素,将其与 之前/之后 的任意元素交换。
function shuffle(a) {
var length = a.length;
var shuffled = Array(length);
for (var index = 0, rand; index < length; index++) {
rand = ~~(Math.random() * (index + 1));
if (rand !== index)
shuffled[index] = shuffled[rand];
shuffled[rand] = a[index];
}
return shuffled;
}