借用构造函数
创建一个名为Parents构造函数
function Parents(name){
this.name = name;
this.sayName = function(){
console.log(this.name);
}
}
创建一个名为Children的构造函数,用来继承Parents的属性
function Children(name){
Parents.call(this, name); // allen
}
创建实例对象,并调用sayName方法
var child = new Children('allen');
child.sayName();
这里我们修改一下Children,看看会输出什么
function Children(name){
// Parents.call(this, name); //allen
// Parents.call(this, arguments); //{ '0': 'allen' }
// Parents.call(this, Array.prototype.slice.call(arguments)); //[ 'allen' ]
// Parents.apply(this, name); //报错
// Parents.apply(this, [name]) //allen
// Parents.apply(this, arguments) //allen
Parents.apply(this, Array.prototype.slice.call(arguments)); //allen
}
参照apply和call方法的区别,上面的结果就显而易见了。
如果我们把Children的参数修改为rest参数,结果就会有新的不同
写累了,未完待续。。。
网友评论