JavaScript prototype.init 疯狂

标签 javascript

谁能解释一下 prototype.init 函数在 JavaScript 中的意义以及它在对象实例化过程中何时被调用?

为什么要用空函数覆盖它?

我正在阅读 JavaScript for Web 这本书,并且在过去的几个小时里一直停留在这个问题上......一段代码应该实现什么?

var Class = function(){ 

var klass = function(){
   this.init.apply(this, arguments); 
};

klass.prototype.init = function(){};

// Shortcut to access prototype 
klass.fn = klass.prototype;

// Shortcut to access class 
klass.fn.parent = klass;

...
}

这对我来说太神奇了...:)

最佳答案

我不确定你不明白什么。 init 只是一个与其他任何方法一样的方法,它恰好在构造函数中被调用,并且具有与构造函数相同的参数。如果它是空的,那只是因为编写它的人暂时不需要在其中放入任何东西,而是想为他的类(class)奠定基础。

function Foo(a, b, c) {
    this.init.apply(this, arguments); //This simply calls init with the arguments from Foo
}

Foo.prototype.init = function(a, b, c) {
    console.log(a, b, c);
}

var f = new Foo(1, 2, 3); //prints 1 2 3

http://jsfiddle.net/Hmgch/

关于JavaScript prototype.init 疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577541/

相关文章:

javascript - 第 n 个 child 没有按预期选择所有 child

javascript - 检测选项卡关闭并清除本地存储

javascript - JQuery,函数看不到文本字段值

javascript - Facebook Graph API - (#200) 页面发布权限错误

javascript - 在 Javascript 中访问多维对象时使用通配符

javascript - 为什么一个计数器工作而另一个不工作? (关闭?)

javascript:使用 IF 语句而不是 OR 设置默认值

javascript - 如何阻止用户在node.js中直接访问网页?

java - 如何在不使用任何加密格式的情况下使用 "PUSH"检索 Firebase 中的子数据

javascript - MQTT SSL 对等端未返回证书