为什么在我的javascript中设置参数的默认值不起作用?

Ami*_*ole 0 javascript parameters constructor

如果没有选项对象传递到我的构造函数中,我想设置默认值'small':

var Plan = function(options){
  this.name = options.name || 'small';
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

var smallPlan = new Plan();

console.log(smallPlan.name);
Run Code Online (Sandbox Code Playgroud)

我明白了 Uncaught TypeError: Cannot read property 'name' of undefined

我究竟做错了什么?这不是在javascript中设置默认参数值的惯用方法吗?

epa*_*llo 9

而不是使代码复杂化以检查选项和名称是否存在,检查对象是否已定义,如果没有,则将其设置为空对象.

var Plan = function(options){
  options = options || {};
  this.name = options.name || 'small';
}
Run Code Online (Sandbox Code Playgroud)