微信小程序学习乱七八糟笔记

#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();//	向数组的末尾添加一个或更多元素,并返回新的长度。

  1. 洗牌嘛就是把一个数组里的元素一个个随机地放到另一个里。复杂度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;
}
  1. 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;
}
发布了36 篇原创文章 · 获赞 0 · 访问量 1771

猜你喜欢

转载自blog.csdn.net/Oneiro_qinyue/article/details/103116467