原型一个函数到另一个函数JavaScript?

时间:2018-03-07 04:28:42

标签: javascript node.js prototype

在OA上我被问到以下问题。我没弄清楚,我想知道这个问题的解决方案。

我被要求安慰Thank you for Logging in Dan

var Wrap = (function(){
  function User(name){
    this.name = name;
  }
  var d = function(){
    console.log('1');
    return "Thank you for Logging in" + this.name;
  };
  User.prototype.thankForLoggingln = d;
  return User;
})();

我认为Wrap会返回用户,这会使Wrap等于User。如果我执行Wrap('Dan')this.name将更改为Dan

问题是,我无法访问thankForLoggingln。我试过Wrap.()thankForLoggingln()这样的事情,我得到了参考错误。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

/etc/init.d/arangodb3 start

表示使用User作为构造函数创建的用户对象继承`thankForLogging in。

所以

User.prototype.thankForLoggingln = d;

诀窍。应该有一个'1'的console.log立即引发它。

设置了两个附加陷阱:

  • console.log( new Wrap(" Dan").thankForLoggingln()); 以小写字母L结尾,由'n'表示。将它拼写为'thankForLogginIn`进行调试。
  • 该名称必须提供正确的空间才能正确打印。

答案 1 :(得分:1)

您对

的理解
  

我认为Wrap返回User,这使得Wrap等于   用户

是对的。但是当你说Wrap('Dan')时,this会引用Global对象。如果您在浏览器上运行此操作,则可以通过window.name访问您的名称变量。您必须使用new关键字调用该函数,以便创建一个新对象,this将引用新创建的对象,User将是它的构造函数。在这种情况下,它可以访问thankForLoggingln函数。

所以正确的做法是

var user = new Wrap('Dan');
user.thankForLoggingln();

有关详细信息,请参阅constructorYou Don't Know JS

答案 2 :(得分:0)

您可以通过实例化 Wrap 来创建用户的实例:

var user = new Wrap('Dan');

使用该实例,您可以像这样调用 thankYouForLoggingIn 方法:

var message = user.thankYouForLoggingIn();
console.log(message);

因此,您的代码示例实际上只是创建类的一种奇特方式。

答案 3 :(得分:0)

尝试以下一定会有效。

Wrap.prototype.thankForLoggingln() 

该函数立即被调用,在尝试Wrap之后它给了我这个输出。所以

ƒ User(name){
    this.name = name;
  }

基本上它遵循使用prototype.So Wrap.prototype的干净继承,既提供方法也提供构造函数用户。使用new关键字或使用原型进行访问。 检查以下内容 Check the links for self invoking functions而且 About Prototypes