前端笔记

ms笔记

星图

js

JavaScript的数字类型

    console.log(typeof 666) 返回一个字符串,表示未经计算的操作数的类型)
    
​    undefined number string boolean null  object
​    && es6中的Symbol 这种对象永不相等,解决属性名冲突的问题
​    引用类型object包含:Data function Array 正则等

原型和原型链

原型:在当前类可以调用的方法
原型链:__proto__链状结构,当前没有就找上一级
   哪里用到了:Vue.prototype.$axios =  this.$axios()
           或求平均值:(在原型上直接调用)
           let ddd = [1,3,4]
           ddd.average() 
           Array.prototype.average = function(){
               let sum = 0;
               for(let i =0;i

系统方法

1.实例方法

toString(): 返回当前对象的字符串形式,返回值为String类型
let newarr = [1,'2',true];
console.log(newarr.toString()); //"1,2,true"
toLocaleString():返回当前对象的“本地化”字符串形式,以便于当前环境的用户辨识和使用,返回值为String类型
(1234567).toLocaleString(); //"1,234,567"
(6.37588).toLocaleString(); //"6.376"
(new Date()).toLocaleString(); //"2017/9/24 下午2:58:21"

2.静态方法

闭包

  • 读取函数内部的变量
  • 使这些变量的值始终保存在内存中

继承

  • 类继承
  • 构造函数继承
  • 组合继承
  • 寄生组合继承
  • extends (es6)

事件流

事件代理 事件委托

跨域

jsonp : get请求

ifram:开启一个新的页面

cors:跨域资源共享(IE10以上,在请求头加origin)

proxy => nginx反向代理

es6

promise

promise库 => bluebird

class

vue

数据双向绑定

object.defineProperty

vuex

vue.sync comtruted watch

axios挂载

算法

排序

无侵入无序数组求最大值

let arr = [12,435,354,6436,566,56546]
let res1 = Math.max.apply(null,arr) //56546
let res2 = Math.min.call(null,...arr) //56546

css

rem em

居中

/* table-cell居中 */
display:table-cell;
vertial-align:middle;
text-align:center;
/* flex居中 */
display:flex;
justify-content:center;
align-items:center;
/* 定位居中 */

flex 盒子模型

cookie

fetch 获取资源接口 (跨域)

计算运行时间

console.time() => console.timeEnd()

console

console.dir() =>显示一个对象的所有属性和方法
console.dir(Function)

伪数组

伪数组:具备length属性,不能使用真数组的方法

什么是伪数组:querySelectAll,getElementByClassName,arugments

let args = arguments
console.log(args) //返回一个伪数组,__proto__显示是一个对象
args = Array.prototype.slice.call(args,0) //在数组的原型上,slice后面为0返回原来的数组
args.push(8) //伪数组没有push方法 通过上面转化变成了真数组

bug解析

overflow属性

scroll:必会出出现滚动条;(斯口柔)

auto:子元素内容大于父元素时出现滚动条

visible:溢出的内容出现在父元素之外(v ze bao)

hidden:溢出隐藏 

targer

在HTML中通过标签打开一个链接,可以通过a的target属性规定在何处打开链接文档。

_blank 在新窗口中打开被链接文档。
_self 默认。在相同的框架中打开被链接文档。
_parent 在父框架集中打开被链接文档。
_top 在整个窗口中打开被链接文档。
framename 在指定的框架中打开被链接文档。

元素的alt和title

alt和title同时设置时,alt => 图片的替代文字 ,title => 图片的解释文字。

关于闭包的题

function Foo() {
    var i = 0;
    return function() {
        console.log(i++);
    }
}
 
var f1 = Foo(),
    f2 = Foo();
f1();//0
f1();//1
f2();//0

通过验证numb++:
let numb = 1;
console.log(numb++)//1
console.log(numb)//2

1.第一次f1,numb++是先输出了以后加的
2.var f1 = Foo() return 出的变量使函数形成了闭包,i在内存里,第二次访问f1函数时使用的是闭包return出来的值
3.f2和f1指向了不同的函数Foo,暂时先想象成类

有效的JavaScript变量定义规则

  • 变量命名必须以字母、下划线”_”或者”$”为开头。 ...
  • 变量名中不允许使用空格和其他标点符号,首个字不能为数字。
  • 变量名长度不能超过255个字符。
  • 变量名区分大小写。( ...
  • 变量名必须放在同一行中
  • 不能使用脚本语言中保留的关键字、保留字、true、false 和null 作为标识符

JavaScript系统方法

parseFloat:1.字符串中只返回第一个数字。2.开头和结尾的空格是允许的。3.如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
console.log(parseFloat("10")); //10
console.log(parseFloat("10.33")); //10.33
console.log(parseFloat("34 45 66")); //34
console.log(parseFloat(" 60 ")); //60
console.log(parseFloat("40 years")); //40
console.log(parseFloat("He was 40")); //NaN

eval:
isNaN(value):如果给定值为 NaN则返回值为true;否则为false。
一个isNaN的 polyfill 可以理解为(这个polyfill利用了NaN自身永不相等于自身这一特征 ):
var isNaN = function(value) {
    var n = Number(value);
    return n !== n;
};
encodeURIComponent():对编码的字符串进行解码decodeURI() 和 decodeURIComponent()、escape()
var codeVal = encodeURIComponent('20180711#abc');
var url = 'http://www.baidu.com?code=' + codeVal;
url; //"http://www.baidu.com?code=20180711%23abc"

location.search  //"?code=20180711%23abc"
decodeURIComponent("?code=20180711%23abc")  //"?code=20180711#abc"
都是URI
eval(string):函数可计算某个字符串,并执行其中的的 JavaScript 代码。//没什么用处

JavaScript常见事件触发

onmousedown:当用户按下鼠标按钮执行Javascript代码

点击

onkeyoress:按下键盘 1.onkeydown:这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。 2.onkeypress:这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。 3.onkeyup:这个事件在用户放开任何先前按下的键盘键时发生。 onblur:离开input HTML中 JavaScript 中 object.onblur=function(){SomeJavaScriptCode}; onchange:会在域的内容改变时发生

HTML的Doctype和严格模式与混杂模式的描述

  • 声明位于文档中的最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。
  • 严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
  • DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现

call和apply

共同作用:都是用来修改函数中this的指向问题

call => 第一个参数:借用方法的对象 可以传递多个参数

function.call(function2,1234,1,2,3)

apply => 第一个参数:借用方法的对象 传递数组

function.apply(function2,[1234,1,2,3])

bind => 第一个参数:借用方法的对象 可以传递多个参数 只改变this指向不执行函数 需要自己调用

function.bind  (function2,1234,1,2,3)()

基本用法:

function add(a,b){
     return a+b
 }
function sub(a,b){
    return a-b
}
var a1 = add.apply(sub,[8,4]) //12 把sub放在add中进行
var a2 = sub.apply(add,[8,4]) //4
var name = '张三',
    age =28;
var obj = {
    name:'李四',
    myfunction:function(){
        console.log(this.name + this.age)
    }
}
var db = {
    name:'王五',
    age: 30
}
obj.myfunction() //李四 undefined
obj.myfunction.call() //张三 28  => 指向window
obj.myfunction.call(db) //王五 30 =>指向db
注意:call后面没有参数指向window
继承
function A() {
    this.name = 'Kevin'
    this.showname = function(){
        console.log(this.name)
    }
}
function B() {
    this.name = 'kobe'
    A.call(this)  //this代表的是B
}
var B = new B()
B.showname()  //Kevin

手动封装

webkit内核

Wekbit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari, Google的Chrome, Nokia S60平台的默认浏览器,Apple手机的默认浏览器,Android手机的默认浏览器均采用的Webkit作为器浏览器内核。Webkit的采用程度由 此可见一斑,理所当然的成为了当今主流的三大浏览器内核之一。另外两个分别是Gecko和Trident,大名鼎鼎的Firefox便是使用的Gecko 内核,而微软的IE系列则使用的是Trident内核。

另外,搜狗浏览器是双核的,双核并不是指一个页面由2个内核同时处理,而是所有网页(通常是标准通用标记语言的应用超文本标记语言)由webkit内核处理,只有银行网站用IE内核

js的一些待解决

arguments

你可能感兴趣的:(前端笔记)