JavaScript中this绑定规则详解:优先级与实践
判定 this现在,我们可以按照优先顺序来总结一下从函数调用的调用点来判定 this 的规则了。按照这个顺序来问问题,然后在第一个规则适用的地方停下。 函数是通过 new 被调用的吗(new 绑定)?如果是,this 就是新构建的对象。var bar = new foo() 函数是通过 call 或 apply 被调用(明确绑定),甚至是隐藏在 bind 硬绑定 之中吗?如果是,this 就是那个被明确指定的对象。var bar = foo.call( obj2 ) 函数是通过环境对象(也称为拥有者或容器对象)被调用的吗(隐含绑定)?如果是,this 就是那个环境对象。var bar = obj1.foo() 否则,使用默认的 this(默认绑定)。如果在 strict mode 下,就是 undefined,否则是 global 对象。var bar = foo() 以上,就是理解对于普通的函数调用来说的 this 绑定规则 所需的全部。是的……几乎是全部 摘自:You-Dont-Know-JS 用作备忘
CSS现代布局技术:Flexbox与Grid布局系统详解
Flex 布局 Flex 是弹性布局,使用display:flex或display: inline-flex指定为 flex 布局 默认 水平的是主轴,垂直的是交叉轴 容器的属性(属性第一个为默认值) flex-direction 主轴方向 row | row-reverse | column | column-reverse flex-wrap 项目换行方式 nowrap | wrap | wrap-reverse flex–flow 以上两个属性的缩写 justify-content 项目在主轴的对齐方式 flex-start | flex-end | center | space-between | space-around align-items 项目在交叉轴对齐方式 flex-start | flex-end | center | baseline | stretch align-content 多跟 轴线 的对齐方式,只有一根轴线则不起作用 flex-start | flex-end | center | space-between | space-around |...
vuex 学习笔记
state 记录所有数据和状态的,跨页面使用的 getters store 里的计算属性 12345678910111213141516{ state:{ aaa:2 }, getters:{ // 通过$store.getters.aaacheng2访问 aaacheng2:state=>{ return state.aaa*2 }, // 通过$store.getters.aaacheng(6)访问 aaacheng:(state)=>(n)=>{ return state.aaa*n } }}// mapGetters 辅助函数 将 store 中的 getter 映射到局部计算属性 mutation 用于修改 state 状态 1234increment (state, n) { state.count...
Vue开发环境搭建与配置教程
安装 vue 在 vue官网,使用 cli 命令行脚手架创建基本项目 123456789# 全局安装 vue-clinpm install --global vue-cli# 创建一个基于 webpack 模板的新项目vue init webpack my-project# 安装依赖,走你cd my-project# 或者 yarnnpm installnpm run dev 运行npm run dev 打开浏览器 http://localhost:8080 配置开发环境 vscode 使用 eslint 规范代码质量 vscode 安装插件 eslint 配置代码格式化规则 eslint 12345678910111213"eslint.autoFixOnSave": true,"eslint.validate": [ "javascript", "javascriptreact", { "language":...
解决Electron应用中Autobahn.js环境检测问题
在 authbahn 源代码中if (global.process && global.process.versions.node) {判断当前的运行环境为 node 环境,但实际上 electron 中使用的还是 web。所以暂时删除掉判断,直接进入 else,为浏览器环境。目前可以正常运行,不知道以后会不会出现其他问题。
Chrome浏览器绿色版制作:从下载到打包的详细步骤
教程 Google Chrome 下载地址https://api.shuax.com/tools/getchrome 插件下载https://shuax.com/portfolio/greenchrome/ 便携化教程 https://bbs.kafan.cn/thread-1696230-1-1.html 安装包制作工具 http://www.jz5u.com/Soft/apply/other/170453.html 安装包制作教程 https://www.cnblogs.com/wuhuacong/p/6101853.html 制作绿色版 Chrome 下载 google Chrome 离线安装包 解压该安装包.exe,再解压.7z 得到 chrome-bin 修改文件夹名称为 Chrome 下载插件 得到 greenChrome ,解压。 把文件夹内的 GreenChrome.ini 和 winmm.dll 一块放在 Chrome 文件夹下。(自行选择 64 位或 32 位与第一步下载的离线安装包对应。已经下载好的是 64 位 Chrome 安装包) 把文件夹内的...
MQTT和WAMP协议:物联网通信技术对比与实践应用
物联网通信协议 MQTT&WAMP一、物联网层次结构1.百度云架构 2.技术层架构 百度云、腾讯云、阿里云和其他物联网云厂商等,基本完全支持:MQTT+HTTP+WEBSOCKET+CoAP 二、MQTT:http://mqtt.org/ MQTT 是什么 应用场景 如何实现 MQTT 应用实例:安装 mqtt 服务:常用的 Rabbitmq 开启 mqtt 服务;安装 emqtt; 使用 MQTT 测试客户端进行简单测试 自己动手编程,实现 mqtt 收发 1234567recv1:mosquitto_sub -h localhost -u wugeek -P 111111 -t "xingtai"recv2:mosquitto_sub -h localhost -u wugeek -P 111111 -t "handan"send:mosquitto_pub -h localhost -u wugeek -P 111111 -t "xingtai" -m...
现代前端技术栈与AngularJS开发实践
前端技术栈 浏览器/渲染引擎 IE chrome firefox Safari QQ/360??????? 前端核心 HTML/HTML5, DOM 树 元素 属性 JavaScript 原型(prototype) Scope JSON https://baike.baidu.com/item/JSON/2462549?fr=aladdin AJAX Promise(解决回调函数嵌套过多的问题) http://callbackhell.com/ http://liubin.org/promises-book/ CSS 使用浏览器调试样式 编辑器 sublime text 3 WebStorm VSCode(推荐!!) 构建工具/生成器 Yeoman http://yeoman.io/generators/ Grunt gulp//在用 webpack//在用 调试 Developer...
React Native vs Ionic 移动应用开发对比与实践
react native 开发 IOS 手机应用基本方法及其与 IONIC 开发的对比1. react-native 介绍react-native 是一款基于 js 框架 React.js 来开发 IOS 和 Android 原生 App 的开源框架, Learn once,write anywhere NR 和 react.js 关系 RN 和 react.js 公用一些抽象层,比如语法标签等,但还是有许多差异,而且目标平台不同。 案例:http://reactnative.cn/cases.html ionic 与 RN:ionic 是 webview,NR 是以 js 方式开发的原生应用 2. 搭建开发环境macOS =>iOS 安装 Homebrew==dpkg 1/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装 node 1brew...
AngularJS和Ionic应用性能优化实践与技巧
angular 性能优化 使用$watchCollection(obj, listener),不要使用$watch()或者$watchGroup(); 使用 one-time binding 1{{::user.first_name}} 使用 Track by以前的用法ng-repeat="user in users"修改后的用法ng-repeat="user in users track by user.id"如果 users 有 id 的话或者ng-repeat="user in users track by $index"如果没有 id 不要使用 console.log(),而是用$log The $log service has several log levels .info .debug and .error. 禁用...