Javascript 在JS中,this.init.apply如何与OOP一起工作

Javascript 在JS中,this.init.apply如何与OOP一起工作,javascript,Javascript,我正在学习Javascript中的OOP,我遇到了第一个示例之一,我不清楚第三行的作用是什么==>this.init.apply(this,arguments) 有人介意解释一下吗?我了解其中的大部分内容,但我只是想感觉我在以正确的方式思考这个问题。Javascript具有原型继承。 粘贴的代码将名为init的方法声明为 klass.prototype.init= 类似于klass对象的任何副本的公共方法。 在Javascript中,每个对象都链接到一个名为“prototype”的特殊对象。您放

我正在学习Javascript中的OOP,我遇到了第一个示例之一,我不清楚第三行的作用是什么==>this.init.apply(this,arguments)


有人介意解释一下吗?我了解其中的大部分内容,但我只是想感觉我在以正确的方式思考这个问题。

Javascript具有原型继承。 粘贴的代码将名为init的方法声明为

klass.prototype.init=

类似于klass对象的任何副本的公共方法。 在Javascript中,每个对象都链接到一个名为“prototype”的特殊对象。您放入该特殊对象中的所有内容都可以访问原始对象的新实例

例如:

var Human = function(n){
    this.name = n;
};
Human.prototype.getName = function(){
   return this.name;
};

//instance of Human
var pedro = new Human("Pedro");
现在pedro可以访问Human.prototype对象

pedro.getName();
//return "Pedro"
pedro prototype“继承”自Human.prototype,Human.prototype“继承”自Object.prototype

让我们回到您的示例:

每个klass副本除了有自己的原型外,还将与klass原型连接。因此,klass的每个副本(在本例中:类返回的每个对象)都将能够使用原始klass原型中定义的函数

klass是一个对象(函数是js中的对象),封装在另一个名为Class的对象/函数的定义中

类生成klass的实例,因为这是类函数返回的内容

这段代码演示了一种使用名为init的方法定义伪类“class”的方法,该方法可从函数类返回的任何对象访问

这样你就可以做到:

var myClass=新类(arrayWithArguments)

在函数klass的上下文中,类内的“this”表示klass对象,它可以调用init,myClass也可以像类函数返回的新实例一样调用init

在您的示例中,init.com可以被看作是一个构造函数


从init调用apply允许使用对象上的参数数组调用init this(类返回的新对象)

第5行中有一个
SyntaxError
function()它无效,您需要
函数(){}?我也被JavaScript中所有这些面向对象的东西是如何工作的弄糊涂了。我建议观看,因为这对我的“点击”有很大帮助。“对象原型中定义的每个函数以及变量都会传递给原始对象的每个副本。”这句话对我来说没有意义。^我想他是说“对象原型中定义的每个函数/变量都由该对象的任何实例继承”。
pedro.getName();
//return "Pedro"