重学JavaScript
未读1. 继承
ES 中只支持实现继承,而且其实现继承主要依靠原型链来实现的。
2. 原型链
ES中 描述了 原型链的概念,并将原型链作为实现继承的主要方法。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。
回顾一下构造函数、原型和实例的关系
每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例。那么此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。
另外,假如另一个原型又是另一个类型的实例,如此层层递进,就构成了实例与原型的链条。这就是原型链的基本概念。
1234567891011121314151617181920function SuperType(){ this.property = true}SuperType.prototype.getSuperValue = function(){ retrun this.property}function Sub ...
前端两三问
未读1、js如何获取数组的keyfunction getObjectKeys(object){
var keys = [];
for (var property in object)
return property;
}
console.log(getObjectKeys(3332:[])) // 3332
2、如何过滤数组中的空数据Array.prototype.notempty = function() {
var arr = [];
this.map(function(val, index) {
if (val !== "" && val != undefined) {
arr.push(val);
}
});
return arr;
}
this.selectHouse = this.selectHouse.notempty()
3、iview checkboxGroup 动态删除某个值 ...
前端两三问
未读1、js 获取当前日期星期几12345678getWeek(time) { let weekDay = ["周日","周一", "周二", "周三", "周四", "周五", "周六"]; let myDate = new Date(Date.parse(time)); return weekDay[myDate.getDay()]},console.log(getWeek('2019-09-11') // 周三
2、iveiw 时间限制今天之前不可选12345678910<Date-picker type="date" :options="pickerOptionsStart" ></Date-picker>pickerOptionsStart: { disabledDate (time) { ...
前端两三问
未读1、Js获取当前时间12345678910111213141516171819202122232425262728293031function dateFormat(date, format) { if (!date) { return '' } if (!(date instanceof Date)) { date = new Date(date) if (date.toString() === 'Invalid Date') { return '无效时间戳' } } format = format || 'yyyy-MM-dd hh:mm:ss' const o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "h+": dat ...
重学JavaScript
未读1. 什么是面向对象
面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,再前面提到过。ES中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。
对象的定义:‘无序属性的集合,其属性可以包含基本值、对象或者函数。’ 严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。所以我们可以把 ES 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数。
每个对象都是基于一个引用类型创建的,这个引用类型可以是上一章讨论的原生类型,也可以是自定义类型。
2. 创建对象
最简单的方式就是创建一个Object的实例,然后再为它添加属性和方法。
let p = new Object()
p.name = 'js'
p.age = 20
p.job = 'jizhe'
p.sayName = function() {
alert(this.name)
}
p.sayName() // js
3. 工厂模式
...
ES6入门系列
未读1. 概述
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种『元编程』即对编程语言进行编程。
1.1 理解
Proxy 是在目标对象之前架设一层『拦截』,外部对对象的访问,都需要经过该层拦截。因此在拦截中对外界的访问进行过滤和改写。
在Es6 中 提供了原生的 Proxy 构造函数,可以用来生成 Proxy实例。
let proxy = new Proxy(target, handler)
Proxy 对象的所有用法,都是上面的形式,不同的只是handler参数的写法。其中new Proxy() 表示生成一个 Proxy实例,target 参数表示所有拦截的目标对象, handler 参数也是一个对象,用来定制拦截行为。如下:
let proxy = new Proxy({}, {
get: function(target, property) {
return 35
}
})
proxy.time // 35
proxy.name // 35
proxy. ...
ES6入门系列
未读
注意: 本文章为 《重学js之JavaScript高级程序设计》系列第五章【JavaScript引用类型】。
关于《重学js之JavaScript高级程序设计》是重新回顾js基础的学习。
引用类型的值(对象)是引用类型的一个实例。在ES中,引用类型是一种数据结构,用于将数据和功能组织在一起,也被称之为类。但这并不妥当,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
对象是某个特定引用类型的实例。新对象是使用 new 操作符跟一个 构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的,如下:
var person = new Object();
上面这行代码创建了 Object 引用类型的一个新实例,然后把该实例保存在变量person中。使用的构造函数是 Object ,它只为新对象定义了默认的属性和方法。
1、object类型
创建object实例的方式有两种。第一种使用new操作符后跟object函数,第二种使用对象字面量表示法,对象字面量是对象定义的一种简写形式。
// 第一种方法
var per ...
Coding
未读1. 添加预览图效果图可以在首页看到,具体代码在 themes/你的主题包/layout/_partial/index-item.js 中修改,index-item.js 视你们具体使用的主题中具体的位置。
增加 如下代码
12345678<% if (post.photos.length) { %> <% var thumb = post.photos[0]; %> <% var thumbUrl = isFullUrl(thumb) ? thumb : url_for(thumb) %> <a href="<%- config.root %><%- post.path %>" class="review-img" style="background-image: url(<%- thumbUrl %>)"> <!-- <img src=" ...
Coding
未读前提昨天在群里,看到小伙伴发了一个 ”不可描述“ 的图片,我刚准备点开看,就发现TA撤回了,该死的撤回。看我怎么整治你。
准备工作
开发工具
一个注册一年以上的微信号
工作原理
本项目的防撤回,实际上的原理是这个微信和你聊天的对象同处再一个群里,它会实时监控聊天记录,检测到消息状态为撤回,就会从撤回之前的保存的记录里,拿出这条数据,转发给出去,从而达到一个防撤回的效果。通俗的讲就是实时备份你的聊天记录,然后提取出来撤回的那条。
注意事项1、如果你想要防撤回效果,本微信号一定要和你当前的微信号再同一个群里。
2、简单的说就是你的机器人微信 和 你的主微信有着同样的群聊,以达到防撤回的目的
3、暂不支持单人撤回,只能对群防撤回。
主要代码
获取你要检测的群对象,如果你想监听所有对象,则不需要
Test = bot.groups().search(u'Test')
将撤回的消息 转发到特定的群里,以供再其他微信查看,可以是单个好友或者文件传输助手
recallNotice = ensure_one(bot.groups().search('recall ...