0%

深浅拷贝

浅拷贝:只考虑对象类型。

1
2
3
4
5
6
7
8
9
10
11
function shallowCopy(obj) {
if (typeof obj !== 'object') return
let newObj = obj instanceof Array ? [] : {}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = obj[key]
}
}
return newObj
}

阅读全文 »

一、创建对象的方式

① 工厂模式

1
2
3
4
5
6
7
8
9
function createPerson(name) {
var o = new Object();
o.name = name;
o.getName = function () {
console.log(this.name);
};
return o;
}
var person1 = createPerson('kevin');
阅读全文 »

过去,要检测一个元素是否可见或者两个元素是否相交并不容易,很多解决办法不可靠或性能很差。然而,随着互联网的发展,这种需求却与日俱增,比如,下面这些情况都需要用到相交检测:

  • 图片懒加载——当图片滚动到可见时才进行加载
  • 内容无限滚动——也就是用户滚动到接近内容底部时直接加载更多,而无需用户操作翻页,给用户一种网页可以无限滚动的错觉
  • 检测广告的曝光情况——为了计算广告收益,需要知道广告元素的曝光情况
  • 在用户看见某个区域时执行任务或播放动画
阅读全文 »

JavaScript Date objects represent a single moment in time in a platform-independent format. Date objects contain a Number that represents milliseconds since 1 January 1970 UTC.

阅读全文 »

0. 获取 dom 节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
document.getElementById('id')
// 通过 ID 获取,上下文只能是 document,返回值只获取到一个元素,没有找到返回 null

document.getElementsByName('name')
// 通过 name 属性获取,上下文只能是 document,返回值是一个类数组,没有找到返回空数组

document.getElementByTagName('p')
var oDiv = document.getElementById('divId')
oDiv.getElementsByTagName('p')
// 通过标签获取,上下文可以是 document 和 dom 节点,返回值是一个类数组,没有找到返回空数组

document.getElementByClassName('class')
// 通过类名获取,上下文可以是 document 和 dom 节点,返回值是一个类数组,没有找到返回空数组,ie8 以下不兼容

document.querySelector('div.class')
// 通过选择器获取,上下文可以是 document 和 dom 节点,返回值只获取到一个元素

document.querySelectorAll('div.class')
// 通过选择器获取,上下文可以是 document 和 dom 节点,返回值是一个类数组

document.documentElement // 获取 html
document.body // 获取 body
document.body.contentEditable="true" // 文本可编辑
document.querySelector('video').playbackRate = 3; // 视频播放速度
阅读全文 »

一、git

  • git branch -a 查看所有分支
  • git branch feature 创建名为 feature 的本地分支
  • git checkout feature 切换到 feature 分支。切换到远程分支时,要 pull 更新代码
  • git checkout -b feature 创建并切换到 feature 分支
    阅读全文 »

  1. 【uniapp】hbuilder 在从 dcloud 上引入插件时会报不能写入的问题,这是没有权限导致的。需要添加管理员权限。但由于插件导入时,默认会重新开启 hbuilderx,所以会导致之前赋予的权限无效。这时应选择默认开启管理员权限。

  2. 【Linux】MobaXterm 比 secureCrt 好用。界面更美观,操作更友好。它既免费,不需要填写 license,而且像 .git 等隐藏文件也能够在目录当中显示,以及它自带编辑器。拒绝 secureCrt 是一种美德。

    阅读全文 »