Node.js 对象概念 作用域、this

数字、字符串:

var v1 = 1;
var v2 = v1;
console.log(v1);
console.log(v2);
console.log(v1 === v2);
v1 = 'Changed';
console.log(v1);
console.log(v2);
console.log(v1 === v2);

 

输出:

1
1
true
Changed
1
false

 

结论:数字、字符串赋值是将值复制一份,===是比较值是否相等。

对象:

var c1 = {};
var c2 = c1;
console.log(c1);
console.log(c2);
console.log(c1 === c2);
c1.name = 'ABC';
console.log(c1);
console.log(c2);
console.log(c1 === c2);

 

输出:

{}
{}
true
{ name: 'ABC' }
{ name: 'ABC' }

 

结论:

  对象赋值间只是传递引用(相当于指针);

var c1 = {};
var c2 = {};
console.log(c1);
console.log(c2);
console.log(c1 === c2);
c1.name = 'ABC';
console.log(c1);
console.log(c2);
console.log(c1 === c2);

 

输出:

{}
{}
false
{ name: 'ABC' }
{}
false

 

对象的===比较的是引用地址。 

http://www.w3school.com.cn/js/js_objects.asp

参考以上文章,了解JS中的对象更进一步。

 

http://howtonode.org/what-is-this

关于万恶的this和作用域。

 总结:作用域与funtion直接挂钩,funtion{==闭包的开始,与之对应的}==闭包结束,还有一个全局闭包。一个模块(相当于一个js文件)==一个闭包。funtion定义的闭包与调用无关,只与funtion声明的位置有关。闭包可以充当私有变量。闭包中有对象被引用,则整个闭包不会释放。

this表示的上下文跟着调用方法之前的对象走,比如a.display(),那display中的this指向的就是a,在文件中直接调用display(),则上下文会指向Global。

 

转载于:https://www.cnblogs.com/jasonzxx/p/3334788.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值