Javascript“返回此”符合“返回”?

时间:2012-03-02 10:52:51

标签: javascript return

var Person = function(){};


function klass() {
     initialize = function(name) {
          // Protected variables
          var _myProtectedMember = 'just a test';

          this.getProtectedMember = function() {
             return _myProtectedMember;
          }

          this.name = name;
              return this;
       };
     say = function (message) {                
          return this.name + ': ' + message + this.getProtectedMember();
          // how to use "return this" in here,in order to mark the code no error.
       };
//console.log(this);   

return {
               constructor:klass,
        initialize : initialize,
        say: say
    } 
    //return this;
}

Person.prototype = new klass();
//console.log(Person.prototype);
new Person().initialize("I :").say("you ").say(" & he");

如何在“说”中使用“return this”,以便标记代码没有错误。

我想知道如何在已经返回的函数中进行“链式调用”?

2 个答案:

答案 0 :(得分:0)

您需要将类实例返回到链式调用。我建议你为所有能够存储类输出的对象创建一个基类,并在“toString”或类似函数中返回它,也许是“输出”。

然后您的代码变为:

(new Person()).initialize("I :").say("you ").say(" & he").toString();

答案 1 :(得分:0)

只能返回一个对象。

所以你有两个选择。

One - 在函数ans中显示消息,返回this

say = function (message) {                
    // show the message here e.g. using an alert    
    alert(this.name + ': ' + message + this.getProtectedMember());
    // then return instance
    return this;
};

Two - 返回包含实例和消息的对象

say = function (message) {  
    message =  this.name + ': ' + message + this.getProtectedMember();            
    return {message:message, instance:this};
};

并将其称为

new Person().initialize("I :").say("you ").instance.say(" & he");