关于各种像素、高度、宽度的一切

移动端dpr值

1
window.devicePixelRatio // iphone6为2 iphone6s为3

阅读更多

关于箭头函数的总结

零零碎碎看过很多关于箭头函数的东西,今天做一个小总结,写下来之后关于箭头函数的内容就一目了然,5分钟完全掌握。

在js中有一个设计缺陷,即,当对象的方法返回函数时,这个函数内部的this指向的是window

1
2
3
4
5
6
7
8
9
10
11
var obj = {
type: 1,
getThis: function() {
return function () {
console.log(this);
}
}
}
var func = obj.getThis();
func(); // 打印出了window

阅读更多

微信浏览器cookie不能删除bug

目前在ios系统10.3.1中部分iphone6和iphone6s中发现,设置成cookie后,再删除cookie不成功
(在微信开发者工具v0.15.152900中也发现此问题)

解决方案:目前暂无

阅读更多

微信title修改hack

微信的title只会在进入页面时读取一次,并不会触发title的change事件。
(因为刷新页面时能及时显示title,这个代码就是用iframe做了一次伪请求,在body中添加一个iframe标签,请求成功之后再移除dom)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function changeTitle(title) {
document.title = title
let body = document.body
let iframe = document.createElement('iframe')
iframe.src = '../../img/wh.png'
iframe.style.display = 'none'
body.appendChild(iframe)
if (iframe.attachEvent) {
body.attachEvent('onload', function() {
setTimeout(function() {
body.removeChild(iframe)
}, 0)
})
} else {
iframe.onload = function() {
setTimeout(function() {
body.removeChild(iframe)
}, 0)
}
}
}

阅读更多

Vue知识点

  1. slot 实现组件内替换

    用法:比如在用router时,在站内跳转想要使用router-link,而站外使用普通a标签,那就可以通过实现link组件,判断传入的值是object还是普通字符串,从而自动实现router-link和普通a的切换

  2. 双向数据沟通v-model语法糖

阅读更多

in和Object.prototype.hasOwnProperty

in和hasOwnProperty经常被用来判断某个对象是否拥有某个属性。
和in运算符不同,hasOwnProperty会忽略掉那些从原型链上继承到的属性。

// in经常会用来判断当前页面是否在浏览器打开,比用UA判断好的多
isMobile = ‘ontouchstart’ in document;

阅读更多

隐式转换

当我们没有重新定义toString与valueOf时,函数的隐式转换会调用默认的toString方法,它会将函数的定义内容作为字符串返回。而当我们主动定义了toString/vauleOf方法时,那么隐式转换的返回结果则由我们自己控制了。其中valueOf的优先级会toString高一点。

阅读更多

关于js中的变量提升的要点

变量对象的创建,经历了一下三个过程:

  1. 建立arguments对象。检查当前上下文中的参数,建立该对象下的属性和属性值
  2. 检查当前上下文的函数声明,即用function关键字声明。在变量对象中以函数名建立属性,属性值指向改函数所以在内存地址的引用。

阅读更多

关于this的实质

记住几点就好:

  1. 函数的this指向是在函数被调用的时候确定的(依据其作用域决定)
  2. 如果函数是被某个对象调用(例如: obj.fn()), 那么其this指向改对象;如果函数是独立执行的,那么其内部的this指向undefined
  3. 非严格模式下,this指向undefined以后,会自动指向全局对象

阅读更多

关于delete

js有自己的垃圾回收机制,因此delete用的时候不是很多,但是了解一下也还是有好处的。

  1. 如果删除成功,返回true;反之,false;
  2. 如果试图删除不存在的变量, delete不会起任何作用(废话),但是返回true;
  3. delete只能删除对象自己的属性,不能删除其原型链上的属性

阅读更多