代码
function Cat(){
}
var c = new Cat();
console.log(c.name);
Cat.prototype.name = 'Snowflake';
输出
"Snowflake"
如上所示,即使我在分配"Snowflake"
c.name
,我也会获得Cat.prototype.name = 'Snowflake'
的价值c.name
我知道变量和函数声明在运行时没有完成。但是分配和操作是在运行时完成的。我想知道我是如何获得Cat.prototype.name = 'Snowflake'
的值的,因为BoxWeight(double w, double h, double d, double m)
是一个赋值而不是一个声明。
答案 0 :(得分:3)
如果您在控制台中运行它,您所看到的只是赋值操作的结果。
作为演示,您可以使用void
来阻止最后一个表达式的结果。
void (Cat.prototype.name = 'Snowflake');
另一个示例是简单地将一些任意表达式作为最后一行。
function Cat(){
}
var c = new Cat();
console.log(c.name);
Cat.prototype.name = 'Snowflake';
123;
现在,控制台将显示123
以及undefined
,这是您实际的console.log()
来电。
避免混淆的更好方法(除了不在控制台中单独测试代码之外),就是在日志中添加一些标记文本。
function Cat(){
}
var c = new Cat();
console.log("The name is:", c.name);
Cat.prototype.name = 'Snowflake';
现在您可以区分最后一个表达式的结果和实际日志。它应该看起来像:
The name is: undefined
"Snowflake"