AngularJS的一个强大之处就在于依赖注入。在调用bootstrap的时候,会调用createInjector来创建一个注射器进行注入。该方法的代码简化如下:
```javascript
function createInjector(modulesToLoad, strictDi) {
strictDi = (strictDi === true);
var INSTANTIATING = {},
providerSuffix = 'Provider',
path = [],
loadedModules = new HashMap([], true),
继续阅读 »
六、函数的扩展
函数参数的默认值
ES6中,允许直接为函数的参数设置默认值,如:
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
继续阅读 »
如何遍历一个数组的元素?在 20 年前,当 JavaScript 出现时,你也许会这样做:
javascript
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
自从 ES5 开始,你可以使用内置的 forEach 方法:
javascript
myArray.forEach(function (value) {
console.log(value);
});
代码更为精简,但有一个小缺点:不能使用 break 语句来跳出循环,也不能使用 return 语句来从闭包函数中返回。
如果有 for
继续阅读 »
今天讨论的新特性让我非常兴奋,因为这个特性是 ES6 中最神奇的特性。
这里的“神奇”意味着什么呢?对于初学者来说,该特性与以往的 JS 完全不同,甚至有些晦涩难懂。从某种意义上说,它完全改变了这门语言的通常行为,这不是“神奇”是什么呢。
不仅如此,该特性还可以简化程序代码,将复杂的“回调堆栈”改成直线执行的形式。
我是不是铺垫的太多了?下面开始深入介绍,你自己去判断吧。
more
简介
什么是 Generator?
看下面代码:
javascript
function* quips(name) {
yield "hello " + name + "!";
yield "i hope you are enjoy
继续阅读 »
PHP是非常流行的Web服务端语言,Ajax是Web前端异步加载的技术。刚刚学习PHP,发现PHP真是强大,对Ajax或RESTFul的支持非常好,代码写起来也非常简单。今天分享一个个人学习的测试示例,前端使用Ajax向服务端发送请求,服务端使用PHP处理请求,并返回响应信息。接口规范遵循RESTFul。
前端
为简化Ajax操作,引入JQuery来发送Ajax请求。请求包含查询字符串,HTTP头及表单数据。
```html test.html
Document
function my_post() {
var div = $('#result');
$.ajax({
继续阅读 »
Airbnb 的 ES5 规范写的非常好,现在添加了 ES6 的部分。
另外阮一峰老师的 ECMAScript 6 入门值得参考。
more
类型
原始类型:值传递
string
number
boolean
null
undefined
```js
const foo = 1;
let bar = foo;
bar = 9;
console.log(foo, bar); // => 1, 9
```
复杂类型:引用传递
object
array
function
```js
const foo = [1, 2];
const bar = foo;
bar[0] = 9;
console.log
继续阅读 »
find_package
This interface refers to the design of CMake for the find_* interfaces, which finds and adds package dependencies in the project target.
lua
target("test")
set_kind("binary")
add_files("*.c")
on_load(function (target)
import("lib.detect.find_package")
target:add(find_package("
继续阅读 »
本节实现的是使用OpenCV里自带的函数,在双击图片时,以其为圆心绘制圆。
回调函数
捕捉鼠标事件
实现过程
引用与创建空图
不再赘述,代码如下。
``` python
import cv2
import numpy
empty image
img = np.zeros((512, 512, 3), np.uint8)
```
设置回调函数
检测鼠标事件,如果左击鼠标则绘制圆。
```python
call back function
def draw_circle(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDBLCLK:
继续阅读 »
递归
```js
function deepCopy(obj) {
if (!obj || typeof obj !== 'object') return obj;
var target = isPlainObject(obj) ? {} : [],
property, val;
for (var key in obj) {
val = obj[key];
// 防止循环引用
if (val === obj) continue;
if (Array.isArray(val) || isPlainObject(val)) {
target[key] = deepCo
继续阅读 »
最近在做一个项目,其中有一段判断一个Extended浮点数是否为整数的代码。我用如下方式实现:
pascal
function IsInt(F: Extended): Boolean;
begin
result := Trunc(F)-F = 0; //整数部分等于自身
end;
测试了许多样例都过了,唯独这个没过:
pascal
IsInt(4.000000002*1000000000); //False
调试时发现: Trunc(F)居然等于4000000001!开始以为是精度的问题,找了许多资料也没能解决。后来将Extended换成了Double,就通过了。百思不得其解中。
继续阅读 »