使用原型在Javascript中继承

时间:2011-04-18 15:24:43

标签: javascript oop inheritance prototype

我正在尝试使用我的父函数来获取值。这可能是一个愚蠢的问题,但我还没有找到关于如何做到这一点的直接指导教程。

我知道在使用原型时可以

function handler (selector) {
    return selector;
}
 Object.prototype.alertLine = function () {
        alert(this);}

handler('hello').alertLine();

仍然收到提醒。但我想知道是否有办法在父函数中指定对象,sting,number,例如

function handler(selector) {
if (typeof(selector) == 'string'){
return String(selector);
}

if (typeof(selector) == 'number') {
 return Number(selector);
}

if (typeof (selector) == 'object') {
 return Object(selector);
}
}

handler.prototype.alertLine = function () {
 alert(this);
}

handler('hello').alertLine();

我不介意Handler是否是一个对象,只有我使用这种方法传递值才有意义。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果你想做类似的事情,你需要实例化一个处理程序对象,而不是将它作为方法使用。你想要一个function constructor

function Handler(selector){

 if (typeof(selector) == 'string'){
  this.selector = String(selector);
 }

 if (typeof(selector) == 'number') {
  this.selector = Number(selector);
 }

 if (typeof (selector) == 'object') {
  this.selector = Object(selector);
 }

}

Handler.prototype.alertLine = function(){
  alert(this.selector);
}

var h = new Handler("hello");
h.alertLine();

答案 1 :(得分:0)

  

“这个想法是让人每次在一行代码中重新初始化一个新对象,而不是var a = new Handler('hello'); a.alertLine();而不是我想要的更改为此var a = new Handler;然后每次引用一个新参数('hello')。alertLine()“

我不确定你为什么要这样做,但这样的事情可能对你有帮助:

var Handler = function() {
    var fun = function() {}
    fun.prototype.set = function(t) {this.t = t; return this;}
    fun.prototype.alertLine = function(){ alert(this.t); }
    return new fun;  
}

var a = Handler(); 
a.set('foo').alertLine(); 

http://jsfiddle.net/herostwist/yPSpT/