function Person() {}
Person.prototype.setName = function(name) {
this.name = name;
}
(new Person()).setName('XiaoMing')
写一段测试脚本,原本没想到有问题,为了谨慎起见还是在console里面跑来一下,然后报了错误:

没想到是什么原因,开始了各种尝试。

拆开写也是OK的

后来请教别人发现是少了一个;,导致的语法报错。在prototype的赋值语句后面增加了一个;就OK了。
function Person() {}
Person.prototype.setName = function(name) {
this.name = name;
};
(new Person()).setName('XiaoMing')
不知道从什么时候起,已经不习惯在末尾加分号了。这导致语法在实际运行的时候是这个样子的。
function Person() {}
Person.prototype.setName = function(name) {
this.name = name;
}(new Person()).setName('XiaoMing')
然后
function(name) {
this.name = name;
}(new Person())
变成了一个立即执行函数。这个函数没有返回值所以是undefined,然后报了那样的错误。