Чтобы обновить ответ, вот обновленный командный файл. Обратите внимание на исключение пробела после имени пользователя и пароля (при прохождении пробела на ftp-сайт). Это также будет использовать аргумент, переданный пакетному файлу.
echo open ftp.myserver.com>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo put %1>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt
Вот способ сделать это, не пользуясь никакими внешними библиотеками:
// Define a class like this
function Person(name, gender){
// Add object properties like this
this.name = name;
this.gender = gender;
}
// Add methods like this. All Person objects will be able to invoke this
Person.prototype.speak = function(){
alert("Howdy, my name is" + this.name);
};
// Instantiate new objects with 'new'
var person = new Person("Bob", "M");
// Invoke methods like this
person.speak(); // alerts "Howdy, my name is Bob"
Теперь реальный ответ намного более сложен, чем это. Например, нет такой вещи как классы в JavaScript. JavaScript использует prototype
- базирующаяся схема наследования.
, Кроме того, существуют многочисленные популярные библиотеки JavaScript, которые имеют их собственный стиль приближения подобной классу функциональности в JavaScript. Вы захотите проверить [по крайней мере 112] Прототип и jQuery.
Решение, которое из них является "лучшим", является отличным способом запустить священную войну на Stack Переполнение. При осуществлении большего тяжелого JavaScript проекта определенно стоит изучить популярную библиотеку и сделать его их путь. Я - парень Прототипа, но Stack Переполнение, кажется, склоняется к jQuery.
До того, чтобы там быть только "один способ сделать это", без любых зависимостей от внешних библиотек, способ, которым я записал, является в значительной степени им.
JavaScript объектно-ориентирован , но это радикально отличается, чем другой ООП языки как Java, C# или C++. Не пытайтесь понять его как этот. Выведите то старое знание и запуститесь снова. JavaScript нужны различные взгляды.
я предложил бы получить хорошее руководство или что-то на предмете. я сам нашел Учебные руководства ExtJS лучшее для меня, хотя я не использовал платформу прежде или после чтения его. Но это действительно дает хорошее объяснение о том, что что в мире JavaScript. Извините, кажется, что то содержание было удалено. Вот ссылка на копия archive.org вместо этого. Работы сегодня.: P
Простой путь:
function Foo(a) {
var that=this;
function privateMethod() { .. }
// public methods
that.add = function(b) {
return a + b;
};
that.avg = function(b) {
return that.add(b) / 2; // calling another public method
};
}
var x = new Foo(10);
alert(x.add(2)); // 12
alert(x.avg(20)); // 15
причина that
состоит в том, что this
может быть связан с чем-то еще, если Вы даете метод как обработчик событий, таким образом, Вы сохраняете значение во время инстанцирования и используете его позже.
Редактирование: это - определенно не лучший способ, просто простой путь. Я ожидаю хороших ответов также!
Если Вы идете для простого, можно избежать "нового" ключевого слова полностью и просто использовать методы фабрики. Я предпочитаю это, иногда, потому что мне нравится использовать JSON для создания объектов.
function getSomeObj(var1, var2){
var obj = {
instancevar1: var1,
instancevar2: var2,
someMethod: function(param)
{
//stuff;
}
};
return obj;
}
var myobj = getSomeObj("var1", "var2");
myobj.someMethod("bla");
я не уверен, что хит производительности для больших объектов, все же.
Поскольку я не допущу план фабрики YUI/Crockford и потому что мне нравится сохранять вещи сам содержавшими и расширяемыми, это - мое изменение:
function Person(params)
{
this.name = params.name || defaultnamevalue;
this.role = params.role || defaultrolevalue;
if(typeof(this.speak)=='undefined') //guarantees one time prototyping
{
Person.prototype.speak = function() {/* do whatever */};
}
}
var Robert = new Person({name:'Bob'});
то, где идеально тест typeof находится на чем-то как первый метод, моделировало
Я думаю, что необходимо считать Douglas Crockford Наследование Prototypal в JavaScript и Классическое Наследование в JavaScript.
Примеры от его страницы:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Эффект? Это позволит Вам добавлять методы более изящным способом:
function Parenizor(value) {
this.setValue(value);
}
Parenizor.method('setValue', function (value) {
this.value = value;
return this;
});
я также рекомендую его видео: Усовершенствованный JavaScript.
можно найти больше видео на его странице: http://javascript.crockford.com/ В книге John Reisig можно найти много примеров от веб-сайта Douglas Crockfor.
Лучший способ определить класс в JavaScript не состоит в том, чтобы определить класс.
Серьезно.
существует несколько различных разновидностей объектной ориентации, некоторые из них:
И вероятно другие я не знаю о.
JavaScript реализует основанное на прототипе OO. В основанном на прототипе OO новые объекты создаются путем копирования других объектов (вместо того, чтобы быть инстанцированными из шаблона класса) и методы, живые непосредственно в объектах вместо в классах. Наследование сделано через делегацию: если объект не имеет метода или свойства, он ищется на его прототипе (прототипах) (т.е. объект, он был клонирован от), то прототипы прототипа и так далее.
, Другими словами: нет никаких классов.
JavaScript на самом деле имеет хорошую тонкую настройку той модели: конструкторы. Мало того, что можно создать объекты путем копирования существующих, можно также создать их "из ничего", так сказать. Если Вы вызываете функцию с new
ключевое слово, та функция становится конструктором и this
, ключевое слово не укажет на текущий объект, но вместо этого на недавно созданный "пустой". Так, можно настроить объект любым путем, Вам нравится. Таким образом конструкторы JavaScript могут взять на себя одну из ролей классов в традиционном основанном на классах OO: служение в качестве шаблона или проекта новых объектов.
Теперь, JavaScript является очень мощным языком, таким образом, довольно легко реализовать основанную на классах систему OO в JavaScript, если Вы хотите. Однако необходимо только сделать это, если у Вас действительно есть потребность в нем и не только, потому что это - способ, которым Java делает это.
MooTools (Мои объектно-ориентированные инструменты) основан на идее классов . Вы даже можете расширить и реализовать с помощью наследования.
После освоения он дает до смешного многоразовый мощный javascript.
var Animal = function(options) {
var name = options.name;
var animal = {};
animal.getName = function() {
return name;
};
var somePrivateMethod = function() {
};
return animal;
};
// usage
var cat = Animal({name: 'tiger'});