Передающие параметры к смоделированной функции в JavaScript

Мое общее правило ползунка состоит в том, чтобы использовать, Добираются, когда Вы выполняете запросы к серверу, которые не собираются изменять состояние. Сообщения резервируются для запросов к серверу, которые изменяют состояние.

5
задан Kenneth 29 November 2009 в 00:12
поделиться

3 ответа

Вы создаете новый Cheese , а аргумент n никогда не используется и не присваивается переменной экземпляра Cheese this.n , потому что эта логика используется только в ] Конструктор Food

Вы можете делать несколько вещей:

1. Примените конструктор Food внутри функции Cheese , используя объект arguments и вновь созданный контекст ( this ).

function Food(n) {
    this.n=n;
}

function Cheese(n) {
    Food.apply (this, arguments);
    alert(this.n);
}

new Cheese('paramesian');

2. Повторите логику конструктора Food ( this.n = n ) для функции конструктора Cheese :

function Food(n) {
    this.n=n;
}

function Cheese(n) {
    this.n = n;
    alert(this.n);
}

Cheese.prototype = new Food();
new Cheese('paramesian');

3. Используйте другую технику, наподобие силовых конструкторов :

function food (n) {
  var instance = {};
  instance.n = n;

  return instance;
}


function cheese (n) {
  var instance = food(n);
  alert(instance.n);

  return instance;
}

cheese('parmesian');
cheese('gouda');

4. Еще один вариант, прототипное наследование :

// helper function
if (typeof Object.create !== 'function') {
  Object.create = function (o) {
    function F () {}
    F.prototype = o;
    return new F();
  };
}

var food = {
  n: "base food",
  showName : function () { alert(this.n); }
};

var cheese1 = Object.create(food);
cheese1.n = 'parmesian';
cheese1.showName(); // method exists only in 'food'
9
ответ дан 14 December 2019 в 04:40
поделиться

Seems like you just want to understand how prototype chaining works in JavaScript. The following is an excellent, simple and well explained tutorial http://www.herongyang.com/JavaScript/Inheritance-from-Constructor-Prototype-Object.html

0
ответ дан 14 December 2019 в 04:40
поделиться

Edit . По-видимому, это не прототипное наследование (см. комментарии), но, похоже, оно работает для этой конкретной цели .

function food(n) {
    this.n=n;
}
function cheese(n) {
    this.prototype = food;
    this.prototype(n);

    alert(this.n);
}

new cheese('paramesian');
-1
ответ дан 14 December 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: