相关疑难解决方法(0)

我可以在Javascript中"扩展"一个闭包定义的"类"吗?

我有一个Javascript"类"定义如下:

var Welcomer = function(name) {
  var pName = name;
  var pMessage = function() {
    return "Hi, " + pName + "!";
  };

  return {
    sayHi: function() {
      alert(pMessage());
    }
  };
};

new Welcomer('Sue').sayHi();
Run Code Online (Sandbox Code Playgroud)

有没有办法以Welcomer这样的方式"子类化" 我可以重新定义公共方法并可以访问私有方法和变量?以下内容将允许我访问公共方法,但不允许访问私有方法:

var UnhappyWelcomer = function(name) {
  var pSadMessage = function() {
    // won't work, b/c I don't have access to pMessage
    return pMessage() + " Miserable day, innit?";
  };

  return {
    sayHi: function() {
      alert(pSadMessage());
    }
  };
};
UnhappyWelcomer.prototype = Welcomer(); // failed …
Run Code Online (Sandbox Code Playgroud)

javascript inheritance closures scoping

15
推荐指数
2
解决办法
4638
查看次数

标签 统计

closures ×1

inheritance ×1

javascript ×1

scoping ×1