javascript - 为什么Klass构造函数要调用apply方法

查看:139
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆