javascript - 为什么Klass构造函数要调用apply方法
本文介绍了javascript - 为什么Klass构造函数要调用apply方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
klass.prototype.init = function(){};
return klass;
};
var Person = new Class;
Person.prototype.init = function(){ // 基于Person的实例做初始化};
// 用法:
var person = new Person
为什么Klass构造函数要调用apply方法
实例化Klass的时候this.init方法的this不就是指向person,为什么还要调用apply,
解决方案
就你的目前的类结果看似没有必要,把apply
去掉,改成如果下
var Class = function(){
var klass = function(){
this.init();
};
klass.prototype.init = function(){};
return klass;
};
var Person = new Class;
Person.prototype.init = function(name,age){
this.name=name;
this.age=age;
}
var person=new Person("petty",30);
console.log(person.name);//undefined 而不是 petty
this.init.apply(this, arguments);
作用将传入构造函数的实际参数传入init方法中调用,执行你期望的初始化工作
这篇关于javascript - 为什么Klass构造函数要调用apply方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文