美文网首页
基础知识

基础知识

作者: debt | 来源:发表于2016-11-20 16:16 被阅读9次

    [].slice.call(arguments,1) ==argument.slice(1) 相关讨论
    但是arguments为类数组对象,没有slice方法,所以只能通过call方法调用!


    window.location 对象会返回很多对象,常用的为 host(域名) ,search(?q=sahkuadkjskji&name=sd&) ,port ,protocol(协议/http/https)


    获取url传参!

      //获取url传参
        function getParam(name) {
            //该正则表达式匹配 以&或者name开头的 并且以 &结尾的
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            // window.location.search  表示?后面的参数  substr(start,length)
            var r = window.location.search.substr(1).match(reg);
            if (r != null) {
                //decodeURIComponent  解码
                //encodeURIComponent  编码
                // test1="http://www.w3school.com.cn/My first/"
                // encodeURIComponent(test1);
    
                //test2="http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F"
                // decodeURIComponent(test2);
                //这里为啥子是r[2]?
                return decodeURIComponent(r[2]);
            }
        }
    

    json 格式一般有两种
    参考json基础
    第一种 :{key:value,name:ss}
    第二种:[{},{},{}]

    1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    一个对象以“{”开始,“}”结束。每个“key”后跟一“:”,“‘key/value’ 对”之间运用 “,”分隔。
    packJson = {"name":"nikita", "password":"1111"}

    2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。  这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
    packJson = [{"name":"nikita", "password":"1111"}, {"name":"tony", "password":"2222"}];
    数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。

    json

    1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
      2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
      3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
      4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号”",以便于不同语言的解析。
      5、JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null 这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。


    前端快速搭建服务器方法!

    gulp 模拟服务,测试ajax


    js 兼容获取可视区域宽高

    documen.documentElement.clientWidth||document.body.clientWidth;

    因为不声名ducument的话,第一个取不到。

    clientWidth:width+padding


    跨域

    跨域demo

    常见跨域方式为jsonp和cors(Cross Origin Resource Sharing)

    jsonp 原理是客户端通过动态添加请求,在url里面携带参数,服务器根据参数返回可执行的js文件,本地通常有一个和url参数名相同的函数.

    cors 服务器在res中返回Access-Control-Allow-Origin: http://api.qiutc.me

    postMessage

    // 主页面 blog.qiutc.com
    <script>function onLoad() { var iframe =document.getElementById('iframe'); var iframeWindow = iframe.contentWindow; iframeWindow.postMessage("I'm message from main page.");}</script><iframe src="http://www.qiutc.me/b.html" onload="onLoad()"</iframe>
    
    
    // b 页面
    <script>window.onmessage = function(e) { e = e || event; console.log(e.data);}</script>
    

    offsetWidth:client+border+滚动条


    关于local Storage

    Aplication Catch(本地缓存应用所需数据)
    manifest 先检查,没有更新则不下载,有更新下载, 下次打开才更新。

    localStorage (键值对)

    Web SQL


    box-shadow: h-shadow v-shadow blur spread color inset;


    Jquery 中 attr和prop的区别,当属性值为 true,false或者disable时使用prop,其他情况使用attr!

    checkbox为多选框。选中多选框的值可以利用
    $("parent").find(":checkbox:checked")表示当前选中的。


    mouseover和mouseenter的区别:冒泡的时候不一样!

    常用mouseenter,mouseover会多次触发!

    focusin和focus的区别,focusin是input元素,而focus一般是父元素。


    Array.from("akdd")可以将类数组转化为数组! [...like-array]=Array.from(like-array)

    相关文章

      网友评论

          本文标题:基础知识

          本文链接:https://www.haomeiwen.com/subject/tksvuttx.html