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和严格模式与混杂模式的描述
- 声明位于文档中的最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。
!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