March 01, 2018

Object.defineProperty 速记

描述

The Object.defineProperty() method defines a new property directly on an object, or modifies an exisiting property on an object, and returns the object.

语法

Object.defineProperty(object, propertyname, descriptor)

object 必需。 要在其上添加或修改属性的对象。 这可能是一个本机 JavaScript对象(即用户定义的对象或内置对象)或 DOM 对象。

propert......

March 01, 2018

js 实现双向绑定的三种方法

手动绑定

订阅发布模式

原理:

监听改变 view 的事件,比如keyup,监听到这个事件后,触发遍历并修改 dom 的函数。

一般通过在数据对象上定义get和set方法(或其它方法),调用时手动调用get或set数据,改变数据后出发UI层的渲染操作

脏检查

以典型的mvvm框架angularjs为代表,angular通过检查脏数据来进行UI层的操作更新;

主要是通过设置的数据来寻找与该数据相关的所有元素,然后再比较数据变化,如果变化则进行指令操作

前端数据劫持

基本思路是使用Object.defineProperty对数据对象做属性get和set的监听,当有数据读取和赋值操作时则调......

March 01, 2018

js 与剪贴板

相关知识点:

为了安全考虑,浏览器禁止 web 脚本主动去操作系统级的剪贴板,但是如果用户主动操作了剪切板(进行了复制,剪切,粘贴),那么允许你的代码去捕获这个事件,并且clipboardData对象操作剪切板的内容

事件

可以捕获以下事件

  beforecopy:在发生复制操作前触发;

  copy:在发生复制操作的时候触发;

  beforecut:在发生剪切操作前触发;

  cut:在发生剪切操作的时候触发;

  beforepaste:在发生粘贴操作前触发;

  paste:在发生粘贴操作的时候触发。

clipboardData 对象

属性

clipboardData ......