月度归档:2016年05月

JavasSript 变量的寻址与传递

代码片段 1

var obj   = {};
    obj.x = 1;
    obj.y = 2;

function test (obj)  {
    obj.x = 111;
}

test(obj);
console.log(obj);
// result >>>>>>>>>  {x=111,y=2}

代码片段 2

var obj   = {};
    obj.x = 1;
    obj.y = 2;

function test(obj) {
    var obj2 = {};
        obj  = obj2;
}

test(obj);
console.log(obj)
// result >>>>>>>>>  {x=1,y=2}

代码片段一就不在讲述,但凡对值类型和引用类型有一定的了解的话,那这个应该是没疑问的。

<!–more–>

代码片段二有两个应该注意的地方:

1 test方法内变量的寻址

test方法内部可以取到三个变量,新定义了的对象obj2参数obj还有方法外的obj
这三个参数有一个特别要注意的地方是,后面两个的名字是一样的,这样在方法运行的时候一定会优先取得参数的那个obj变量。而方法外的那个obj参数实际相当于window.obj

2 变量的传递过程

在调用test方法,并传入方法外的obj变量,实际相当于传入window.obj这样一个引用类型①,也就是说代码obj = obj2;实际是对这个拷贝的地址的改变,因为这个地址只是个拷贝,所以这并不会改变其指向的真实对象。而代码片段1的obj.x = 111;这会通过obj这个地址查询到x这个属性,并对其赋值。

other

var num = 1;

function outFn() {
    this.num = 10;
    function inFn() {
        console.log(num);
        var num = 100;
        console.log(this.num);
        console.log(window.num);
    }
    return inFn;
}

var newfn = outFn();
new newfn();  // this指向了对象

注:
引用类型:引用类型的特点是在传递的过程中并不进行自身的值复制,而是传入地址的拷贝。

转自:http://www.cnblogs.com/rulee/archive/2012/09/03/2663800.html

足迹所到过城市之天津

先上美图:

天津塘沽外滩公园

天津塘沽外滩公园01
为什么天津辣(那)么多漂亮的地方,偏偏放一张外滩公园的图片,因为在天津塘沽待的时间相对比天津其他地方久,所以就放一张到目前印象相对比较深刻的地方;

<!–more–>

天津

记忆碎片:豆腐脑、豆浆、油条、煎饼果子、塘沽区、洋货市场、轻轨、天津方言、保税区、室内装修、学生、天津奥林匹克体育中心、第三大街、信义隆装饰有限公司、泰达

初次结缘天津大概是初三毕业之后的暑假(2006年7、8月份),有两个月的空闲期;所以就出去打工(玩咯),正好这是亲戚有在承包奥体中心的基础建设;嗯,也就是这个时候接触到天津,在奥体中心度过了一个多月,之后就回去念高中了。

再次亲近天津,应该就是2007年、2008年,那时候就是来这里打工咯;
父亲大人在他朋友的装修装饰公司①上班,我就来这里打工学习生存技能;
到这里接触到了室内装潢、设计师、水电工、木工、瓦工、油漆工(刮腻子和刷涂料)等等(他们都是很可爱的人);
也学到了很多技能:水电工、油漆工、木工等;
每天从住的地方(韶山北里②)出发,
带上必备的生存工具,
吃点早餐:煎饼果子、豆浆油条、豆腐脑;
屁颠屁颠的骑个自行车(有时候电动车)穿梭于塘沽区、滨海新区的大街小巷、各种小区去做干活;
累并快乐着。

当然也经历过奥运会了;

感觉会写好多… 就先写这些吧。


图片集咯

标志建筑物
↑ 外滩公园 标志建筑物

夜景
↑ 外滩公园 夜景

船和调皮的顽童
↑ 外滩公园 船和调皮的顽童

海门大桥
↑ 外滩公园 海门大桥

东方公主
↑ 外滩公园 东方公主

洋货市场
↑ 洋货市场


注:
① 装修装饰公司:北京信义隆装饰有限公司(天津分公司),位置天津滨海新区第三大街豪威大厦B座104;
② 韶山北里:天津市塘沽区杭州道与韶山路交口;

图片资源:

扯淡小分队【第N+回】

为什么是第N+回呢,因为之前有好几回了,记忆模糊(好记忆不如烂笔头,所以就想记下来

时间地点人物事件

时间:2016-05-23
地点:七年咖啡 老北京前后涮羊肉(和平里店)
人物:旭旭苗神教授
事件:周末约吗

我们的扯淡小分队又聚会了;聚会目的是什么呢,说白了就是扯扯大家近况。旭旭刚从日本团建回来,给我们带来一些【Made in Japan】的小点心,然后我们就愉快的决定周六聚聚😄(吃货联盟)。

先来张美图:

小点心

<!–more–>


简单的JavaScript异步之setTimeout(ES5)

猜想下会打印什么东西来;

代码:

for (var i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);
    }, 0);
}

预览:

setTimeout预览

简单的解释:

setTimeout解释

嗯,就这些。

拓展 通过作用域来输出0-9

1) 可用ES5函数作用域;

for (var i = 0; i < 10; i++) {
    (function (i) { // 作用域
        setTimeout(function() {
            console.log(i);
        }, 0);
    })(i);
}

2) ES6的块级作用域

var换成let

for (let i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);
    }, 0);
}

图片集咯

七年咖啡Desk

七年咖啡Desk

小点心 (巧克力&&杏仁饼干)

七年咖啡desk

老北京前后涮羊肉的火锅

老北京前后涮羊肉的火锅


未完待续……


watch&figlet

安装 watch

sudo brew install watch

iTerm or Terminal(终端)

示例代码

watch -t -n1 "date"

2016    3 29        20  33 54   CST

watch && figlet

watch -t -n1 "date +%T|figlet -f banner"

 #####    ###    #   #####  #        #  #        #####
#     #  #   #  ### #     # #    #  ### #    #  #     #
      # #     #  #        # #    #   #  #    #  #     #
 #####  #     #      #####  #    #      #    #   ######
#       #     #  #        # #######  #  #######       #
#        #   #  ### #     #      #  ###      #  #     #
#######   ###    #   #####       #   #       #   #####

<!– more –>

figlet

安装 figlet

$ sudo brew install figlet

iTerm or Terminal(终端)

示例代码

$ figlet "webclown"

              _          _
__      _____| |__   ___| | _____      ___ __
\ \ /\ / / _ \ '_ \ / __| |/ _ \ \ /\ / / '_ \
 \ V  V /  __/ |_) | (__| | (_) \ V  V /| | | |
  \_/\_/ \___|_.__/ \___|_|\___/ \_/\_/ |_| |_|

设置字体

$ figlet -f tinker-toy "W e b c l o w n"

o       o             o                 o
|       |             |                 |
o   o   o     o-o     O-o       o-o     |     o-o     o   o   o    o-o
 \ / \ /      |-'     |  |     |        |     | |      \ / \ /     |  |
  o   o       o-o     o-o       o-o     o     o-o       o   o      o  o

<!– more –>

Wiki

  • http://www.figlet.org/

通过wget下载网站

通过wget下载一个网站

工具

iTerm or Terminal(终端)

示例代码

wget -r -p -np -k --restrict-file-names=nocontrol [url]

如何在电脑上安装wget

<!– more –>

简单的 shell 脚本

wget.sh

put it in /Users/$user

chmod -x wget.sh // Writable

./wget [url] // Any directory

Wiki

  • https://en.wikipedia.org/wiki/Wget
  • https://wiki.ubuntuusers.de/wget/