我正在学习JavaScript中的对象概念并且有这个疑问。这是Bin http://jsbin.com/yoyepetewa/edit?js,console
的链接function Obj() {
//using 'this' and var produces the same result
//this.x = 1;
var x = 1;
}
var a = new Obj();
var b = new Obj();
a.x = 2;
b.x = 3;
console.log(`a's x = ${a.x}`);
console.log(`b's x = ${b.x}`);
答案 0 :(得分:1)
使用'这个'和var产生相同的结果
不,它没有。 macroexpand
在设置对象的属性方面绝对没有任何作用。
但是,由于您之后添加了(macroexpand '(pop '(1 2 3)))
属性,因此您并未发现它不会执行相同的操作。如果我们在之前查看var x = 1;
,您将其设置为2或3,我们可以看到差异。
使用x
进行比较:
x

...使用this
:
function Obj() {
this.x = 1;
//var x = 1;
}
var a = new Obj();
console.log(`(1) a's x = ${a.x}`);
var b = new Obj();
console.log(`(1) b's x = ${b.x}`);
a.x = 2;
b.x = 3;
console.log(`(2) a's x = ${a.x}`);
console.log(`(2) b's x = ${b.x}`);

注意var
如何开始function Obj() {
//this.x = 1;
var x = 1;
}
var a = new Obj();
console.log(`(1) a's x = ${a.x}`);
var b = new Obj();
console.log(`(1) b's x = ${b.x}`);
a.x = 2;
b.x = 3;
console.log(`(2) a's x = ${a.x}`);
console.log(`(2) b's x = ${b.x}`);
。