调用方法:Vue.set( target, key, value ) target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据 value :重新赋的值 具体用法js代码: //设置初始状态和值 let j = { id: 0, "progressTime": "", "progressContent": "", "isSet": true, "_temporary"…
vue中不能检测到数组和对象的两种变化: 1.数组长度的变化 vm.arr.length = 4 2,数组通过索引值修改内容 vm.arr[1] = 'aa' Vue.$set(target,key,value)可以动态的给数组.对象添加修改数据,并更新视 图中数据的显示. vue在构造函数new Vue()时,就通过Object.defineProperty中的getter和setter 这两个方法,完成了对数据的绑定.所以直接通过vm.arr[1] = 'aa'的方法,无法修改值触发vue中…
this.tagList = [{ id:1, tagName:'90后' }, { id:2, tagName:'土豪' }, { id:3, tagName:'美女' }, { id:4, tagName:'帅哥' }, { id:5, tagName:'鸽子王' }, { id:6, tagName:'人傻钱多' }] 今天做一个这样的功能:遍历对象数组 tagList 渲染出标签列表,以前写过类似的功能,但这次不一样,tagList的数组项中没有表示选中状态的属性select,我自己后面…
Commands Clients Documentation Community Download Support License Join us in London October 19th for the 2nd Redis Developers Day 2015 and October 20th for the Redis Unconference London. Redis Keyspace Notifications IMPORTANT Keyspace notifications i…
前言 最近死磕了一段时间vue源码,想想觉得还是要输出点东西,我们先来从Vue提供的Vue.set()和this.$set()这两个api看看它内部是怎么实现的. Vue.set()和this.$set()应用的场景 平时做项目的时候难免不会对数组或者对象进行这样的骚操作操作,结果发现,咦~~,他喵的,怎么页面没有重新渲染. const vueInstance = new Vue({ data: { arr: [1, 2], obj1: { a: 3 } } }); vueInstance.$d…
Vue 可以通过数组变异的方法可以控制数组的增减,却不能更改数组及对象,vue可以通过set方法改变数组的长度,改变某项的值,在组件中可以使用$set方法改变数组长度和某项的值 调用方法:Vue.set( target, key, value ) target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据 value :重新赋的值 如下面的例子: html: <textarea v-for="ite1m of arryText">{{ite1m.optio…
一.内存泄漏 1.指令绑定了事件,却没有解绑事件,容易产生内存泄漏.(曾经遇到过的案例) 2.v-if指令产生内存泄漏,比如v-if删除了父级元素,却没有删除父级元素里的dom片段 3.跳转到别的路由,却没有删除产生的dom片段.需要在beforeDestroy()钩子里注销三方插件,销毁定时器等 二.Vue.$set 1.vue不能检测到数组与对象的2种变化:数组长度变化,数组索引修改内容:对象属性的添加与删除. 2.Vue.$set(target,key,value):可以动态的给数组.对象…
vue-toy 200行左右代码模拟vue实现,视图渲染部分使用React来代替Snabbdom,欢迎Star. 项目地址:https://github.com/bplok20010/vue-toy codesandbox示例 已实现的参数: interface Options { el: HTMLElement | string; propsData?: Record<string, any>; props?: string[]; name?: string; data?: () =>…
Vue的相关知识有 字符串模板 MVVM 虚拟dom和domdiff,查看下一篇笔记 字符串模板 function render(template, data) { const reg = /\{\{(\w+)\}\}/; // 模板字符串正则 if (reg.test(template)) { // 判断模板里是否有模板字符串 const name = reg.exec(template)[1]; // 查找当前模板里第一个模板字符串的字段 template = template.replac…
Vue其实是用Function写的一个class: 1.通过一系列的函数给Vue.prototype上动态挂载方法和属性 2.通过initGlobalAPI(Vue)给Vue本身扩展全局API 数据驱动:Vue的核心思想是数据驱动,所谓数据驱动,是指视图是由数据驱动生成的 new Vue()发生了什么? 合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data.props.computed.watcher if (vm.$options.el) { vm.$mount(vm.$op…
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证网页的安全性和网页制作者的一定控制权,有些浏览器对象是无法更改的,比如"window.location"对象,或者对它们的更改是无效的,比如"window.navigator"对象.然而,最近我发现Chrome出现了一个小"bug",在Chrome…
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就各奔东西了,但是他们却紧紧相连,为了解决这一问题,我们需要从根源上来切断对象赋值时就对象与新对象之间的藕断丝连...... 拷贝 我们寻找方法时候,找到了拷贝这个方法,就是把要赋值的对象的属性一个一个加到新对象中去,所以我们得到了clone方法: function clone (obj) { var…
jquery和zepto的扩展方法extend 总结下jQuery(3.1.1)和zepto(1.1.6)到底是如何来开放接口,使之可以进行扩展,两者都会有类型判断,本文使用简单的类型判断,暂不考虑兼容. 类型判断 var class2type = {},toString = class2type.toString,$={}; //判断类型 function type(obj) { return obj == null ? String(obj) : class2type[toString.ca…
Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程. Proxy可以理解成,在目标对象之前架设一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写.Proxy这个词的原意是代理,用在这里表示由它来"代理"某些操作,可以译为"代理器".…
1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution. public class Solution { public int[] TwoSum(int[] nums, int target) {…
优点: 丢弃了一些不常用的方法(jQuery.fn):slideUp.fadeIn.animate等: 新增获取子节点的方法(ToolKit.fn):firstChild,lastChild等: 新增ToolKit.Threads线程操作函数(有效解决自定义弹窗同时运行的问题): 加入JSON对象(JSON.parse和JSON.stringify); 重写ToolKit.toString方法为JSON.stringify,ToolKit.get和ToolKit.post的dataType为js…
开篇概述 在上篇的ES7之Decorators实现AOP示例中,我们预先体验了ES7的Decorators,虽然它只是一个简单的日志AOP拦截Demo.但它也足以让我们体会到ES7 Decorators的强大魅力所在.所以为什么博主会为它而专门写作此文.在Angular2中的TypeScript Annotate就是标注装潢器的另一类实现.同样如果你也是一个React的爱好者,你应该已经发现了redux2中也开始利用ES7的Decorators进行了大量重构. 尝试过Python的同学们,我相信…
本来是打算参考zepto.js,然后将里面想要的部分抽出来做函数,随调随用. 但后面发现这种写法重复代码太多,代码不整洁,于是就打算模仿下zepto的写法,挑出些比较实用的方法,造一下轮子. 起名叫“iSelector”,已经放到了github上面. 简单的做了封装,本来也想使用“$”相关的符号,但看来看去不是很合适,就用大写的“S”替代. 在造轮子的过程中,了解到了以前不知道的Element.Array等相关的方法或属性,这也是种收获. 同时引进了jasmine单元测试工具,通过加载其中的一个…
ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleResponses的功能有: - 为jqXHR设置所有responseXXX字段(值便是响应数据) - 找到正确的dataType (在content-type和预期的dataType两者中的一个) - 返回正确的响应数据 我们看一个响应数据的格式: responses = { text: "{"co…
1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE10以上不支持. 如果你安装了多个IE,条件注释将会以最高版本的IE为标准. 条件注释的基本结构和HTML的注释(<!– –>)是一样的.因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们. IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容. 条件注释使用方法示…
ES6中定义类的方式, 就是ES3和ES5中定义类的语法糖,虽然也有些区别,但是整体定义类的方式更加简洁,类的继承更加方便, 如果想对ES6中的继承更加熟悉, 最好了解ES5中原型继承的方式, 博客园中说JS继承的文章很多, 想要深入了解的同学自己去搜: 定义一个class: 每一个使用class方式定义的类默认都有一个constructor函数, 这个函数是构造函数的主函数, 该函数体内部的this指向生成的实例, say() {}为原型上的方法, 我们定义一个简单的类 : "use stri…
// 1.自调防止全局变量污染(function( window ) { var version = '1.0.0'; var document = window.document; var arr = []; var push = arr.push; var slice = arr.slice; var concat = arr.concat; var obj = {}; var toString = obj.toString; var hasOwn = obj.hasOwnProperty;…
非个人的全部理解,部分摘自cocos官网教程,感谢cocos官网. 在<CCScheduler.h>头文件中,定义了关于调度器的五个类:Timer,TimerTargetSelector,TimerTargetCallback, TimerScriptHandler和Scheduler,Timer和Scheduler直接继承于Ref类,TimerTargetSelector,TimerTargetCallback和TimerScriptHandler继承自Timer类. 先看看Timer类:…
sea-base.js /** * Sea.js 2.2.3 | seajs.org/LICENSE.md */ (function(global, undefined) { // Avoid conflicting when `sea.js` is loaded multiple times if (global.seajs) { return } var seajs = global.seajs = { // The current version of Sea.js being used…
mobx是redux的代替品,其本身就是一个很好的MVVM框架.因此花点力气研究一下它. 网上下最新的2.75 function Todo() { this.id = Math.random() mobx.extendObservable(this, { aaa: 111, bbb: 222 }) } var vm = new Todo mobx.autorun(function () { console.log(vm.aaa + " " + vm.bbb) }) 这是es5的写法,可…
在实际情况中经常会遇到对对象复制的问题.比如在处理项目中的一笔多结构的数据存储或者调用,这个时候你就要对对象(json)进行操作,而不同的操作根据不同的需求来定义.其中最常见最普遍的是对对象的复制,重新定义,扩展等.下面我们正对这些问题来进行探讨.要了解对象,我们首先需要了解js的内存分配机制: var o = {a:1};当我们在给一个变量赋值的时候已经在浏览器中开辟了一块内存出来.这块内存在浏览器中占了一定的空间,这个时候,我们可以称变量 o 为栈,称{a:1}为堆,他们之间的关系可以用下面…
这篇我们来看看Redis五大类型中的第四大类型:“集合类型”,集合类型还是蛮有意思的,第一个是因为它算是只使用key的Dictionary简易版, 这样说来的话,它就比Dictionary节省很多内存消耗,第二个是因为它和C#中的HashSet是一个等同类型,废话不多说,先看redis手册,如下: 上面就是redis中的set类型使用到的所有方法,还是老话,常用的方法也就那么四个(CURD)... 一: 常用方法 1. SAdd 这个方法毫无疑问,就是向集合里面添加数据,比如下面这样,我往fru…
前言 上次我们看了zepto的选择器方面的东西,其实zepto简单很大程度是因为他用了最新的检索器querySelectorAll,今天我们来学习下zepto的一些零碎点的地方吧,主要根据zepto官方文档顺序来 contains (parent, node) 该方法用于检测父节点是否包含给定的dom节点,如果两者相同则返回falsecontains 为javascript的基本语法,首先在ie中,最后其它浏览器也扩展了,如果a包含b则返回true p = document.getElement…
前言 我们移动端基本使用zepto了,而我也从一个小白变成稍微靠谱一点的前端了,最近居然经常要改到zepto源码但是,我对zepto不太熟悉,其实前端水准还是不够,所以便私下偷偷学习下吧,别被发现了 核心方法$() 我们使用这个方法一般有几个用途(我这里只说我自己用到过的),这里根据使用度排个序: ① 选择器/$(selector) 将返回一个包装过的dom集合对象(有很多选择器) ② html字符串/$(domStr) 仍然返回一个包装过的dom对象,他会将字符串初始化为我们的dom结构PS:…
Kali2.0系统自带的WiFite脚本代码中有几行错误,以下是修正后的代码: #!/usr/bin/python # -*- coding: utf-8 -*- """ wifite author: derv82 at gmail author: bwall @botnet_hunter (ballastsec@gmail.com) author: drone @dronesec (ballastsec@gmail.com) Thanks to everyone that…