Libx

Libx

Thoughts, stories and ideas

元编程
在1024这一天,先开个坑叭。 什么是原编程(Mata Programming)很早之前就接触了元编程的一些东西,但是并没有什么很好的理解,只是觉得这个名字好牛逼,很玄幻🐸。主要还是在实际的coding中并没有直接的感触,最近又看到了相关的概念所以来简单的写点东西。 不准确的翻译在《你不知道的JS-ES6与未来》有这样的解释:元编程是针对程序本身的行为进行操作的编程。换句话说,它是为你程序的编程而进行的编程。 是的,很拗口。也有更详细些的这样的解释:元编程(笼统地说)是所有关于一门语言的底层机制,而不是数据建模或者业务逻辑那些高级抽象。如果程序可以被描述为 “制作程序”,元编程就能被描...
CoCo
一篇感觉非常有意思的文章转载一下。转载自@doodlewind 内存寻梦环游记:一个变量的三重死亡内存的世界小 u 身高 64 位,是内存世界 number 家族里的一名浮点数变量。因为小 u 身体的二进制第一位是 0,所以按照 IEEE 754 标准,大家都把她当做女孩子来看待。她第 2 位到第 11 位的阶码并不够大,使得她看起来小巧玲珑;而她剩下的 52 个小数位十分精致,这样工作的时候和她打交道的变量舍入误差都很小,所以大家都很喜欢她。 小 u 每天的工作,是在内存世界里和其他的变量打交道,计算出有用的结果去造福人类世界。平时,在函数调用结束以后,小 u 就可以下班回到她在源代码...
Proxy & Rreflect
Proxy:更好的对象处理Proxy概述Proxy 用来修改某些操作的默认行为,等同于在语言层面进行修改,属于一种元编程的:对编程语言进行编程。 顾名思义,Proxy的原意即是代理,Proxy 可以理解为在目标对象前架设一个拦截层,外界对该对象的访问都经过这层拦截,因此提供了一种机制来对外界的访问进行过滤和改写。先来看一个示例:let obj = new Proxy({},{ get:function(target,key,receiver){ console.log(`getting ${key}`) retur...
理解Vue数据绑定
基本原理Vue 实现数据绑定的方法是采用数据劫持解和发布者-订阅者的方法,通过 Objec.defineProperty()来劫持各个属性的 setter 和 getter 在数据变动的时候,触发相应的监听回调。 思路 实现一个监听器 Observer,对数据对象的所有属性进行监听,如有变动拿到新值并且通知订阅者 实现一个指令解析器,对各个元素节点的指令进行扫描解析,根据指令模板替换数据,以及绑定相应函数 实现一个 Watcher 连接 Observer 和 Compile 的桥梁,订阅并受到每个属性变动的通知,执行绑定的相应回调函数,更新视图 mvvm 入口函数 实现Observer...
我不知道的JavaScript<四>:原型
当我们在谈论原型时,我们在谈论什么? 从对象说起 有一句话是这样说的 JS 中万物皆对象,这句话虽然不完全正确但是有些道理,毕竟 JS 中还是有很多特殊的复杂子类型比如函数,虽然函数也是可调用的对象,不过毕竟typeOf null结果都是 object [滑稽](因为底层对象都表示为二进制,在 JS 中二进制前三位都为 0 的话会被判定为 object 类型,null 的二进制表示为全零自然会是 object) 但是还是要好好梳理下对象相关的一些东西 扯些关系不大的数组和对象的关系源远流长,以至于要区分数组和对象都要专门使用Object.prototype.toString.call...
我不知道的JavaScript<三>:this
this可以说是在JS中相当复杂甚至有时可以说是“邪乎”的一个机制,他带来了很多便利,但有时侯会让人感到有些崩溃👽 今天就来梳理下this的部分。 为什么要使用this?首先来看一段代码:function identify(){ return this.name.toUpperCase()}function speak(){ var greeting = "hello"+ identify.call(this); console.log(greeting)}var me = {name:"Faker"}var you =...
我不知道的JavaScript<二>:闭包
上篇梳理了作用域的相关基础知识,要理解闭包,作用域是相当重要的一环。闭包一直以来总是一个会出现些怪异问题的东西,之所以怪异是因为自己还是没有理解透彻,这次就来梳理一下闭包的相关问题。 闭包在JS中的地位可以说是相当重要的了,总是会在各种论坛博客上面看到各种前辈们所写的关于闭包的解析,自己也是似懂非懂,总以为自己懂了,然后偶然间突然想起来要问问自己却又说不出个所以然。所以现在就来系统的阐述一下。 何为闭包我们从前辈的总结中得到这样一个定义:当函数可以记住并且访问所在的词法作用域时,就产生了闭包,即使函数是在当前作用域之外执行。 先来看一个例子:function foo (){ ...
我不知道的JavaScript<一>:作用域
一直以来对于JS总是有一些一知半解的东西,因为这个假期没有留校,也还没有去找实习,就当给自己一些“私人时间”来对之前不求甚解的东西来梳理一遍吧。 一、作用域所有语言都有作用域,这是一种语言的基本功能之一,就是能够存储变量的值,并且能够在之后对之进行访问和修改,也正是因为这种存储和访问变量的能力将状态带给了程序。要将变量引入程序就带来了相应的其他问题,怎么存,如何找到他们。相应的就需要一套规则来存储变量,并且之后可以方便的找到这些变量,这套规则就是作用域了。 1.1 编译虽然JS是一门脚本语言,但是他也是一门“编译语言”,与传统C,JAVA等不同的是,他并非是提前编译的,而是在运行时进行编...
avatar
Shady
for fun
FRIENDS