function Person() {}
Person.prototype.setName = function(name) {
this.name = name;
}
(new Person()).setName('XiaoMing')
写一段测试脚本,原本没想到有问题,为了谨慎起见还是在console里面跑来一下,然后报了错误:
![](https://img.haomeiwen.com/i1206343/b57644e3964b6e4c.png)
没想到是什么原因,开始了各种尝试。
![](https://img.haomeiwen.com/i1206343/60a74aca509fd40b.png)
拆开写也是OK的
![](https://img.haomeiwen.com/i1206343/e9e0b35aa87fee46.png)
后来请教别人发现是少了一个;
,导致的语法报错。在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
,然后报了那样的错误。
网友评论