Наследование в Javascript с использованием прототипа - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь использовать родительскую функцию для получения значения.это, вероятно, глупый вопрос, но я не смог найти учебник, как это сделать.

Я знаю, что при использовании прототипа можно

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

handler('hello').alertLine();

и по-прежнему получать оповещения.но я хочу знать, есть ли способ указать объект, строку, число в родительской функции, например,

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 ]

1 голос
/ 18 апреля 2011

Если вы хотите сделать что-то подобное, вам нужно создать экземпляр объекта-обработчика, а не использовать его как метод.Вы хотите конструктор функции .

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();
0 голосов
/ 20 апреля 2011

"Идея состоит в том, чтобы человек каждый раз заново инициализировал новый объект в одной строке кода, поэтому вместо var a = new Handler ('hello'); a.alertLine (); вместо этого я хочу изменить на эту переменную a = новый обработчик, а затем ссылаться на новый параметр каждый раз a ('привет'). 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/

...