Skip to content

Instantly share code, notes, and snippets.

View jimxiang's full-sized avatar

jimxiang jimxiang

  • 同济
  • Tongji, Shanghai
View GitHub Profile
@jimxiang
jimxiang / mongodb.md
Created December 25, 2017 07:57
mongodb

1.value是数组,选择该数组中包含某个值xxx,并且返回完整的value,db.document.find({value: "xxx"})

1.正则
整数+小数:'123456789000.7890'.replace(/(?=\B(?:\d{3})+\b)(\d{3}(.\d+$)?)/g,',$1'); // "123,456,789,000.7890"
整数(1):'123456789000'.replace(/\B(?=(\d{3})+\b)/g, ','); // "123,456,789,000"
整数(2):'12345678900'.replace(/(\d)(?=(\d{3})+$)/g, '$1,'); // "12,345,678,900"
2.原生
(123456789000).toLocaleString('en-US'); // "123,456,789,000"

1.run command: mongod   
2.start mongo shell: mongo   
3.show dbs   
4.show collections   
5.use [dbname]   
6.db.[collection name].insertOne({})   
7.db.[collection name].find({}) // 查询条件(Object),条件为空({})查询collection下的所有数据   
8.db.[collection name].insertMany([{}]) //插入对象数组   
9.db.[collection name].find({'key': {$in: ['value1', 'value2'...]}}) // 根据key的value范围查找   
@jimxiang
jimxiang / vscode_extensions.md
Last active May 1, 2017 13:23
vscode常用插件
  • auto close tag
  • auto rename tag
  • beautify
  • colorize
  • html css support
  • path autocomplete
  • path intellisense
  • scss intellisense preview
  • javascript snippet pack
  • vscode-icons
  • Array.map()可以用来对数组进行深拷贝
  • 函数名本质上是函数指针
  • 拥有arguments的函数:arguments.callee
  • 调用拥有arguments的函数的对象:arguments.callee.caller
  • Math.random()常用公式:Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
// 选择1~10之间的数值
Math.floor(Math.random() * 10 + 1);

// 选择2~10之间的数值

1.jQuery关键语法

jQuery.fn = jQuery.protoytpe;
jQuery.fn.init.prototype = jQuery.fn;

jQuery在构造函数中声明了一个fn属性,将其只想了jQuery的原型——jQuery.prototype,并在原型中添加了init方法,然后又将init的原型指向jQuery.prototype。而在jQuery的构造函数中,返回init的实例对象。最后对外暴露入口时,将$与jQuery对等起来。   因此,当我们使用$(selector)创建一个jQuery对象时,实际上是创建了一个init实例,这里真正的构造函数是原型中的init方法。如果不加节制的使用$创建对象会产生很多个init实例,对内存的消耗是非常大的,所以用变量保存将要重复使用的jQuery对象是一个很好的做法。

2.jQuery扩展

  • $.extend 扩展方法被添加到jQuery构造函数中。

1.属性和方法的位置

  • 构造函数中:属性和方法为当前实例单独拥有,只能被当前实例访问,并且每声明一个实例,其中的方法都会被重新创建一次。
  • 原型中:属性和方法为所有实例共同拥有,可以被所有实例访问,新声明实例不会重复创建方法
  • 模块作用域:属性和实例不能被任何实例访问,但是能被内部方法访问,新声明的实例不会重复创建相同的方法

构造函数中的方法总会在总会在声明一个新的实例时被重复创建,因此我们声明的方法都应该尽量避免出现在构造函数中。
如果方法中需要用到构造函数的变量,或者想要公开,那就需要放在原型中。
如果方法需要私有不被外界访问,那么就放置在模块作用域中。
对于属性需要放置在哪里,需要根据上述三个位置的特性作出合理的判断。

1.对象的定义

在javascript中,对象是由一些无序的key-value对组成的,其中value值可以是基本值、对象或者函数。

2.对象的创建

  • 通过new关键字
  • 通过对象字面量

3.构造函数

在javascript中,new关键字可以让一个函数变得与众不同。

function demo() {

1.js隐式转换

先看几个例子:

// demo1
function fn() {
    return 20;
}

console.log(fn + 10);

执行上下文的生命周期包括创建和执行,this的指向是在执行上下文被创建时确定的。在执行上下文的创建阶段,会分别生成变量对象、建立作用域链和确定this指向。在函数执行过程中,this一旦被确定,就不可更改了。

1.全局对象中的this

全局对象中的this比较特殊,它指向this自身。

// 通过this绑定到全局对象
this.a2 = 20;

// 通过声明绑定到变量对象,但在全局环境中,变量对象就是它自身
var a1 = 10;