Как прототип Yegge копирует переменные экземпляра дескриптора в качестве примера?

Объедините их в одну строку (или оставьте так, если они так начали), затем разбейте ее на and и снова разбейте каждую подстроку:

var words = new[] { "visit", "houston", "and", "san", "antonio", "and", "austin", "and", "corpus", "christi" };

var sentence = string.Join(' ', words);  // "visit houston and san .... christi"

var cities = sentence.Split("and", StringSplitOptions.None)
                     .Select(x => x.Split(' ', StringSplitOptions.RemoveEmptyEntries))
                     .ToArray();

enter image description here

Обратите внимание, что если ваш ввод включает в себя пробелы (например, ..., "and", "san antonio", ...), то это может потребовать некоторой корректировки.

6
задан Matt Mitchell 23 October 2008 в 01:06
поделиться

2 ответа

Разве это не зависит, как Вы на самом деле реализуете наследование в своей системе?

Например, в версии JavaScript того, что Вы описываете, prototype для AwesomeDragonImmuneToFire обычно был бы экземпляр AwesomeDragon, и так как Вы всегда работали бы с экземплярами, не будет иметь значения, что Вы делаете к какому-то конкретному AwesomeDragon:

function Dragon()
{
    this.position = "starting point";
}

function AwesomeDragon()
{
    this.awesome = true;
}
AwesomeDragon.prototype = new Dragon();

function AwesomeDragonImmuneToFire()
{
    this.immuneToFire = true;
}
AwesomeDragonImmuneToFire.prototype = new AwesomeDragon();

>>> var awesome = new AwesomeDragon();
>>> var immune = new AwesomeDragonImmuneToFire();
>>> awesome.position = "flying above village";
>>> immune.position;
"starting point"
>>> immune.awesome
true

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

Ключевая вещь состоит в том, что каждый объект имеет цепочку объектов прототипа, которая исследована, при попытке получить доступ к атрибуту, который сам объект не содержит согласно описанию Yegge того, каков "Шаблон Свойств".

https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Details_of_the_Object_Model

10
ответ дан 9 December 2019 в 22:42
поделиться

Это включит обновление свойства 'положения' AwesomeDragon. Однако момент, я делаю этот AwesomeDragonImmuneToFire, взлетит также.

Возможно, я неправильно понимаю, но я не уверен, почему Вы думаете, что AwesomeDragonImmuneToFire взлетит также. Если они будут двумя отдельными объектами, и положение является свойством объектов затем, то каждый экземпляр (дракон) будет иметь их собственное положение. Менять положение одного дракона не должно влиять на положение другого.

1
ответ дан 9 December 2019 в 22:42
поделиться
Другие вопросы по тегам:

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