js的方法中形式参数如果不传怎么定一个默认值呢

JavaScript020

js的方法中形式参数如果不传怎么定一个默认值呢,第1张

ES6 可以像PHP那样设置默认值。

function f(x = 1)

{

    console.log(x)

}

f()

// 输出:1

ES5 需要自己在代码里处理

function f(x)

{

    x = typeof x !== 'undefined' ? x : 1

    console.log(x)

}

f()

// 输出:1

我认为,不是不能给父类构造函数传参数,而是传的参数最终不能起到作用。举个例子:

function Parents(ln) { this.lastName=ln} //定义父类构造函数

function Children(fn,ln) { this.firstName=fn} //定义子类,lastName 继承自父类

//原型链继承,给父类构造函数传入参数,试图用 Children 类构造函数中传入的 ln 初始化 lastName:

Children.prototype=new Parents(this ln)

//尝试建立对象实例:

var child=new Children("Bill","Gates")

//输出结果。很明显,lastNmae 并没有得到想要的值:

alert(child.firstName)//Bill

alert(child.lastName)//Undefine

这说明给父类构造函数传递参数是无效的。原因就在于原型链方式中,调用父类构造函数的代码并不在子类构造函数中,建立对象实例时给的属性值(即子类构造函数的参数)并不能影响到子类调用的父类构造函数。

当然,在继承时可以这样写:

Children.prototype=new Parents("Gates")//调用父类构造函数时给固定值

但是,这个固定的属性值必定会影响所有子类的对象实例,相当于子类构造函数“擅作主张”给所有对象实例的属性提前“赋了值”。这样写是不太符合面向对象编程的规则的。