日常方法小记

时间戳转化为现在时间

new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); 

 

js之JSON, ajax ,跨域,回调

js之正则表达式

// 正则表达式2中写法
var reg=/^[a-z]at$/;
var reg2=new RegExp('^[a-z]at$');
reg2.test('cat')

//\b  匹配一个单词的边界  \B匹配一个单词的非边界
// 表达式 /\bhi\b/.test('hi this')
// 表达式 /\Bhi\B/.test('this')
// \d 匹配数字  \D匹配非数字
// /\d/.test('12345')
// /\D/.test('aaaa')
// \w 匹配数字,字母,下划线  \W  取反
// /\w/.test('#123abc_')
// ^开头  $结束  /^hi$/只能匹配'hi'
// []匹配一堆字符中的任意一个 /^[A-Za-z]at$/   /^[aeiou]at$/.test('iat')
// [^] 不匹配这个集合中的任意一个字符  /^[^aeiou]at$/.test('cat')
// +  表示前一模式可以重复一次或者n次  /^go+at$/.test('goooooat')
// *  表示前一模式可以重复0次或者n次  /^go*at$/.test('gat')
// ? 表示前一模式可以重复0次或1次  /^go?at$/.test('goat')
// {x} 表示前一模式被重复x次  /^go{2}le$/.test('goole')
// {x,y} 表示前一模式被重复x到y次 /^go{2,4}le$/.test('goooole')
// {x,} 表示前一模式被重复至少x次
// ()可以指定一堆字符来匹配一个模式  /^(very )*/.test('large')
// | 或者 /^com$|^org$/只能匹配com org
// \转移符  '^\\w+$' 由数字,26字母,或者下划线组成的字符串
// [\u4e00-\u9fa5]汉字中的任意一个汉字

 

 

js-this  指向函数的拥有者

        //1.在函数中引用 指向window
        var str = 'js';
        function fo() {
            var str = 'jq';
            console.log(this.str);//此时this指向window
            console.log(this === window);
            //输出js,true
        }
        fo();
        //2.对象调用 指向当前对象
        //3.构造函数调用  this指向实例化对象
        function Fun(name, age) {
            this.name = name;
            this.age = age
        }
        var fun = new Fun('lisa', 14)// this指向fun
        console.log(fun.name)
        //4.this指向 .call()  .apply() 在一个对象中调用另一个对象
        var a = '111';
        function test() {
            return this.a;
        }
        var o = {};
        o.a = 1;
        o.b = test;
        console.log(o.b.call())//为空指向window

        // 函数自执行 this指向window
        var number = 1;
        var obj = {
            number: 2,
            showNumber: function () {
                this.number = 3;
                (function () {
                    console.log(this.number)//1
                })();
                console.log(this.number);//3
            }
        }
        obj.showNumber();
<ul>
   <li>list item 1</li>
   <li>list item 2</li>
   <li>list item 3</li>
</ul>
<script>
$('ul>li').click(function(){
// siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
   $(this).css('color', 'red').siblings().css('color','#000');
})
</script>

 

js-原型  公共属性和方法

    function Person() { }
    Person.prototype.name = 'Lina';
    var person1 = new Person()
    var person2 = new Person()
    console.log(person1.name, person2.name)//Lina Lisa
    // 修改原型属性
    person1.__proto__.name = 'aaa';
    console.log(person1.name, person2.name)//aaa aaa
    // 检查是否为实例对象 isPrototypeOf
    console.log(Person.prototype.isPrototypeOf(person1))//true

    // 混合使用构造函数和原型
    function Aa(name, age) {
        this.name = name;
        this.age = age;
    } Aa.prototype.action = function () {
        return this.name + this.age
    }
    aa = new Aa('lisa', 15);//.....实例化n个
    console.log(aa.action())
//继承

js-操作DOM//文档对象模型

节点类型:Node-节点  NodeList-节点集合

// 获取节点的4个方法
document.getElementsByTagName('body')//标签-返回的是节点集合nodelist
document.getElementById('wrap')//id-返回的是节点
document.getElementsByClassName('aa')//class-返回节点集合
document.querySelectorAll('.aa')//选择器获取节点集合

js-立即执行函数

function f1(){
     return new Promise((resolve,reject)=>{
            setTimeout(function(){
                console.log("f1")
            },80)

    })
}
// 异步变同步
(async function(){
    await f1();
     console.log('a')
})()

js属性设置和获取 . / []的区别:.是自身的属性,[]可以是变量

var obj={};
obj.name='lina';
obj['age']=22;
console.log(obj['name'])

var o={};
o.name='xxx';
var nameA='name'
console.log(o[nameA])//xxx


// 3种检测属性:1.in运算符2.hasOwnProperty()3.!=undefined
'name' in o
o.hasOwnProperty('name')
o.name!=undefined

var obj = { key1: 1, key2: 2 }; 
for (a in obj) { console.log(a) }//key1 key2
for (a in obj) { console.log(obj[a]) }//1 2

var arr=[{x:1},{y:2},{z:3}]
for(a in arr){console.log(a)}//0,1,2 数组一般使用for 和
$.each(arr,function(index,item){

})

js-arguments

使用:在不确定实参个数时函数内部使用

特性:1.类数组,代表实参集合2..length返回数组个数3.[index]下标的形式提取某个元素

js-函数创建

普通函数 驼峰命名 this指向函数的使用者

构造函数 使用方式: new this指向实例化对象 命名:首字母大写

工厂模式

函数声明和函数表达式区别:函数声明在声明之前可以使用,但是函数表达式不行

 

优化眼睛:webpack-bundle-analyzer

安装:npm install --save-dev webpack-bundle-analyzer

node调试:npm --inspect xx.js 访问  chrome://inspect

 

1.window.open("http://www.runoob.com");打开一个新窗口

2.arr.unshift()数据追加前 push()数组追加后.arr.splice(i, 1)

3.https://music.liuzhijin.cn/生成音乐外链(.mp3),但是会失效

4.height:100vh=height:100%;撑开与屏幕高度一致

5.z-index和position一起使用

6.box-shadow样式:

7.先平移再旋转

8.[v-cloak]{display:none}//当页面没有加载完是不显示

9.event.preventDefault()//取消事件的默认动作

在elintrc.js的rules里配置

'semi':['error','always'],//分号
'indent':0,//忽略缩进

在代码行添加

/* eslint-disable no new*/
new Vue({    //忽略该行校验

})

 

vue的路由,状态管理,服务器端渲染

vue插件使用:eg:

// 用 Browserify 或 webpack 提供的 CommonJS 模块环境时
var Vue = require('vue')
var VueRouter = require('vue-router')

// 不要忘了调用此方法
Vue.use(VueRouter)

如果想在VUE项目运行后自动打开浏览器预览,设置如下:

打开config文件夹下的index.js文件
设置autoOpenBrowser: true,

 

 

 

微信小程序:

只有两个标签:view代替所有的块级标签 text所有的行级标签

小bug:text里面不能换行

样式:

<image src="网络地址"></image>

js:基本类型和基本包装类型

基本类型:Undefined,Null,Boolean,Number,String

基本包装类型:Boolean,Number,String    Number.prototype

new Number(123.123).toFixed(2)

new String("a").charCodeAt()

包装类型:封装了原始类型,提供操作值API的对象

如何使用:自动创建,自动销毁

原则:变量是啥类型就自动创建啥类型

通过prototype给基本类型添加方法

区别在于:生存期------引用类型所创建的对象,在执行的期间一直在内存中,而基本包装对象只是存在了一瞬间。

js:数组合并:var c=concant(arr1,arr2) 

搜索框:this.monitObejtData.filter((item, i) => (item.name.toLowerCase().indexOf(searchContent.toLowerCase()) > -1));

trim()去空格

null>=0   //true
undefined>=0   //false

h5之cookielocalStorage、sessionStorage

    public SetCookie(name,value){//两个参数,一个是cookie的名子,一个是值
        var Days = 7; //此 cookie 将被保存1天
        var exp = new Date();  
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toUTCString();        
    }

优势:1.拓展了cookie的4k限制2.将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的

局限:1.高版本浏览器才支持2.值类型为String3.内存消耗过多会导致浏览器卡顿4.不能被爬虫抓取到5.隐私模式下面是不可读取的localStorage与sessionStorage:就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

使用:

    var storage = window.localStorage;
    // 三种写入
    storage.setItem('a', 1)
    storage.b = 2;
    storage['c'] = 3;
    // 3种读取
    console.log(storage.getItem('a'), storage.a, storage['a'])
    //将localStorage中的某个键值对删除
    storage.removeItem("a");
    // 键值获取
    for (var i = 0; i < storage.length; i++) {
        var key = storage.key(i);
        console.log(key);
    }
    // storage.clear()//清空
    // JSON.stringify()JSON=>JSON字符串  JSON.parse() JSON字符串=>JSON对象,使用

 

 

 

js:常用方法:

'abc'.charCodeAt(0) //97  获得字符串中某个具体字符的 Unicode 编码。
'abc'.indexOf('b')//1  返回某个指定的字符串值在字符串中首次出现的位置。
//1.indexOf() 方法对大小写敏感!2.如果要检索的字符串值没有出现,则该方法返回 -1。
'abcoabco'.lastIndexOf('o')//7   返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
'abc'.substring(1)//"bc"   不能为负值
'abcdfetghh'.slice(1)//bcdfetghh 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符
'abcdfetghh'.slice(-1) //"h"
'abcdfetghh'.slice(1,2)//"b"
'abcdfetghh'.substr(1,2) //"bc"
substr()
/*String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。
slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。
slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
还要注意的是,String.slice() 与 Array.slice() 相似。*/

css3边框:border-radius  box-shadow   border-image

box-shadow: 10px 10px 5px #888888;
/*box-shadow: h-shadow v-shadow blur spread color inset;
水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影的颜色 外部阴影 (outset) 改为内部阴影。 */

border-image: url(border.png) 30 30 round;
/* border-image :border-image-source border-image-slice border-image-width border-image-outset border-image-repeat */


border-radius: 2em 1em 4em / 0.5em 3em;
/* 等价于: */
border-top-left-radius: 2em 0.5em;
border-top-right-radius: 1em 3em;
border-bottom-right-radius: 4em 0.5em;
border-bottom-left-radius: 1em 3em;

css的transform: rotate() translate() skew() scale()

perspective景深,透视点:模拟人眼到3d物体的距离,取值越大 perspective为none元素则没有Z轴(就是2D元素)

旋转scale:先平移再旋转:1:旋转原点会影响旋转效果,2连同坐标一起转

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值