JS一些碎知识点

一些js基本知识点

Doctype 浏览器渲染模式

  • 渲染模式发展历史

在多年以前(IE6诞生以前),各浏览器都处于各自比较封闭的发展中(基本没有兼容性可谈)。随着WEB的发展,兼容性问题的解决越来越显得迫切,随即,各浏览器厂商发布了按照标准模式(遵循各厂商制定的统一标准)工作的浏览器,比如IE6就是其中之一。但是考虑到以前建设的网站并不支持标准模式,所以各浏览器在加入标准模式的同时也保留了混杂模式(即以前那种未按照统一标准工作的模式,也叫怪异模式)。

  • 标准模式(不兼容之前的语法)

    • html 4.0

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

    • xhtml 1.0

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    • html5

      <!DOCTYPE html>

    • P.S. 细心的你可以看出随着html版本的发展,标准模式的写法也在变化着
  • 怪异模式 / 混杂模式
    • 很简单,将开头标准模式的声明去掉即可
    • IE6的怪异模式,有个新的盒模型,border和padding都属于宽高的范畴

label

  • label中有一个for属性,可以将该label和一个input绑定,当我们点击该label的文字时,input也回聚焦
  • for 属性 — >  js中表示htmlFor
<label for="input">User:</label>
    <input id="input" type="text" name="user" value="" placeholder="请输入用户名" />

图片预加载

  • 假设这样一种需求,在文档加载完毕后的某个时刻,可能几秒后,可能几分钟后,也可能半小时后,我们要通过js动态插入一张10M的大图片?
  • 会产生这样的问题?图片太大,网速又不快,所以图片加载需要很长时间,所以导致页面上的那个图片只呈现了部分,甚至没有呈现,一片空白,形成了极其差的用户体验。
  • 如何解决呢?那就是图片预加载,在图片还没动态插入之前,我们就创造img节点,并为之设置src,在设置src后,浏览器就会开始下载src上的资源,然后在我们需要的时候即可瞬间插入文档
  • 启发?在请求的资源需要加载很长时间的情况下,我们可以预加载,在需要使用的时候,直接用就可以,极大提高了用户体验

封装 getElementsByClassName(); IE8及以下不兼容

  • 类名、id名不像js标识符命名那么规范,尽量别用特殊字符就行
  • js标识符规范,由字母,数字,下划线,$ 组成,但不能以数字开头
// 封装js中的getElenmentsByClassName();
    Document.prototype.getByClassName = function (className) {
        var allEle = document.getElementsByTagName(‘*‘);
        var retArr = {
            length: 0,
            push: Array.prototype.push
        };
        var len = allEle.length;
        var regBlank = /^\s|\s$/g;
        for(var i = 0; i < len; i++) {
            var strForClass = allEle[i].className
                allEle[i].className
                && allEle[i].className.replace(regBlank, ‘‘).indexOf(className) !== -1
                && retArr.push(allEle[i]);
        }
        return retArr;
    }
 

Math对象

  • Math.sqrt()

    • 开方
  • Math.floor()
    • 向下取整
  • Math .ceil()
    • 向上取整
  • Math.random()
    • Math.random()  (0, 1)
    • eg: (5, 15) -》 Math.random() * 10 + 5
    • 先看区间 15 - 5 = 10
    • 再看起始点 5
    • 所以Math.random() * 10 + 5

文档碎片

  • 每次我们操作dom都会引起Reflow 或 Repaint,所以过多次的dom操作会降低性能
  • 但是我们可以将一些dom操作集合起来再操作dom,可减少Reflow或Repaint
  • 创建文档碎片
    • var frag = document.createDocumentFragment();
    • 该碎片具有正常dom节点的所有方法
 var frag = document.createDocumentFragment();
    var div = document.createElement(‘div‘);
    var span = document.createElement(‘span‘);
    frag.sppendChild(div);
    frag.appendChild(span);
    document.body.appendChild(frag);

cdn

  • 基站
  • CDN的全称是Content Delivery Network,即内容分发网络。
  • 原理:
简单地说,内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。总的来说,内容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有"一跳"(Single Hop)之遥。同时,代理缓存是内容提供商源服务器(通常位于CDN服务提供商的数据中心)的一个透明镜像。这样的架构使得CDN服务提供商能够代表他们客户,即内容供应商,向最终用户提供尽可能好的体验,而这些用户是不能容忍请求响应时间有任何延迟的。
时间: 2024-08-28 21:01:17

JS一些碎知识点的相关文章

js学习笔记知识点

AJAX用法安全限制JSONPCORS面向对象编程创建对象构造函数原型继承class继承 AJAX 用法 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象: 'use strict'; function success(text) { var textarea = document.getE

js面试题知识点全解(一作用域和闭包)

问题: 1.说一下对变量提升的理解 2.说明this几种不同的使用场景 3.如何理解作用域 4.实际开发中闭包的应用 知识点: js没有块级作用域只有函数和全局作用域,如下代码: if(true){ var name='killua' //把name定义在块里和放在外面是一样的,等同于在外面声明一个变量name,在块内给name赋值 }//同等于下面的代码 //建议用下面方式写 var name if(true){ name='killua' } console.log(name) //打印出来

js,css小知识点记录

JS手册中提到:可以使用任意表达式作比较表达式.任何值为0.null.未定义或空字符串的表达式被解释为 false.其他任意值的表达式解释为 true.也就是说,这里会隐式的转换为布尔值. //css :#id .下属class(可以是直接或间接下属classs) #newfncbtnpanel .am-condition { margin-top: 10px; margin-left: 6px; margin-bottom: 5px; } show()\hide()  是jquery方法,即d

js一些小知识点

isNaN(),里面传一个参数,用来判断传入的值是否是数字.可以用来做一些简单的表单判断. 用innerHTML可以获得span的内容,并且可以设置span的内容.实际上对所有非表单元素都可以用innerHTML来获得其内容 示例: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <style> span { display: i

js事件相关知识点总结

HTML页面是怎样实现交互的? 2017-05-22 js事件之事件流: 事件流原理图:事件流是从window开始,最后回到window的一个过程,分为三个阶段(1~5)捕获过程.(5~6)目标过程.(6~10)冒泡过程. 冒泡型事件:事件按照从最具体的事件目标到最不具体的事件目标(document对象)向上传播的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozi

javaScript知识体系(下)- js高级部分知识点串烧-总结

写在开头: 准备自从更博以来每天更新一些新内容上去.就在前几天连续3天每天一篇文章之后收到消息,大概意思是取消博文发布,请发布和程序员相关,原创的东西.看到这个消息有点满脸闷逼啊,为啥子? 本来想:这是学习过程中的一些笔记,与大家共享,也提醒自己成长到了何种程度.但是乎,看到消息后,思前想后,想出了以下几点原因:1.写博客时未注明这些知识体系是自己学习笔记,在此,补上:第二:是我更新太快,被怀疑有水份.这也是停了两天不更新的原因.开头的最后,难关得过,继续更新. 首先从js初级部分引入,包括语言

js的重要知识点

一.事件 1-261.onmousedown定义:onmousedown事件会在鼠标按键被按下时发生 2.onmouseup定义:onmouseup事件会在鼠标按键被松开时发生 3.onmousemove定义:onmousemove事件会在鼠标指针移动时发生支持该事件的js对象:document但是onmousemove默认情况下没有任何对象的一个事件:因为鼠标移动频繁发生. 4.onmouseover定义:onmouseover事件会在鼠标指针移动到指定的对象上时发生 5.onmouseout

js面试题知识点全解(一原型和原型链1)

1.如何准确判断一个变量是数组类型2.写一个原型链继承的例子3.描述new一个对象的过程4.zepto(或其他框架)源码中如何使用原型链知识点:1.构造函数2.构造函数-扩展3.原型规则和示例4.原型链5.instanceof 讲解: 构造函数:一般函数为大写字母开头的都是构造函数,如下: function Foo(name,age){ this.name=name this.age=age //return this }var f = new Foo('L',20) ; //构造函数形成实例,

js所学知识点

javascript是基于对象和事件驱动的客户端脚本[javascript的组成] Bom:浏览对象模型(与浏览器交互的方法和接口) Dom:文档对象模型(处理网页内容的方法和接口) ecma:核心(描述了js的语法和基本对象) [js引入方式]1.js 外联引入方式 : <script type="text/javascript" src="js/abc.js"></script> 在body闭合的上面:2.当script 在table写的