Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.12.2013, 20:43
Кандидат Javascript-наук
Отправить личное сообщение для hrundel Посмотреть профиль Найти все сообщения от hrundel
 
Регистрация: 01.08.2009
Сообщений: 102

Как создать объект?
Есть простой класс:
var myclass = {
	property1: "20"
	myfunc=function(){alert();}
}


Как можно создать объект этого класса? Я делаю так:
var myobj = new myclass();
myobj.property1="30";

Но мне выдаётся ошибка: Ошибка: TypeError: myclass is not a constructor

Как сделать правильно?
Ответить с цитированием
  #2 (permalink)  
Старый 20.12.2013, 21:04
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

var myclass = {
        property1: function (x) {
          this.property1 = x;
          return this.property1;
        },
        myfunc: function () {
          alert(this.property1);
        }
      };
      var myobj = myclass;
      myobj.property1 = 30;
      myobj.myfunc();

      var best = function () {
          this.property1 = function (x) {
            this.property1 = x;
            return this.property1;
          }
          this.myfunc = function () {
            alert(this.property1);
          }
        };
      var myNew = new best;
      myNew.property1 = 10;
      myNew.myfunc();

в js нет классов. Объекты
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2013, 21:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2013, 21:09
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Для вашего случая:
var myobj = Object.create(myclass);


ИЛИ

var myobj = {__proto__: myclass};


(свойство __proto__ стандартизировано в ECMAScript6 и работает во всех современных браузерах)


Или вариант с конструктором:
function myclass() {}

myclass.prototype.property1 = '20';
myclass.prototype.myfunc = function () { alert(); };

var myobj = new myclass();


PS: myclass - это анонимный объект у вас, а не класс. Рекомендую ознакомится http://learn.javascript.ru/prototype
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 20.12.2013 в 21:11.
Ответить с цитированием
  #5 (permalink)  
Старый 20.12.2013, 21:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Poznakomlus
в js нет классов. Объекты
Верней сказать - конструкторы и прототипы.

// Конструктор принято записывать с большой буквы
function ReallyBest(property) {
    this.property1 = property;
}

// Методы принято выносить в прототип
ReallyBest.prototype.myFunc = function() {
    alert(this.property1);
};

// При вызове конструктора принято ставить скобки, даже если нет аргументов
var instance = new ReallyBest(30);
instance.myFunc();
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2013, 21:16
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Poznakomlus Посмотреть сообщение
в js нет классов. Объекты
В ECMAScript6 добавили сахарную обёртку над прототипами, в виде class
что нового в ECMAScript6

class Animal {
    constructor(name) {
        this.name = name;
    }

    sayName() {
        console.log(this.name);
    }
}

class Dog extends Animal {
    constructor(name) {
        super(name);
    }

    bark() {
        console.log("Woof!");
    }
}
__________________
kobezzza
code monkey
Ответить с цитированием
  #7 (permalink)  
Старый 20.12.2013, 21:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от hrundel
myclass is not a constructor
myclass is not a constructor -> гугл транслейт -> MyClass не является конструктором -> js конструктор -> гугл поиск -> http://javascript.ru/tutorial/object/inheritance (вторая ссылка, но и первая сгодилась бы - http://habrahabr.ru/post/119391/)

Неужели слишком сложная цепочка?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 21.12.2013, 07:33
Кандидат Javascript-наук
Отправить личное сообщение для hrundel Посмотреть профиль Найти все сообщения от hrundel
 
Регистрация: 01.08.2009
Сообщений: 102

Всем спасибо, в том числе за полезные ссылки. Этот код то что нужно.
var myobj = Object.create(myclass);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить свойство объекта в объект в объекте ? %) mitiya Общие вопросы Javascript 1 07.10.2012 14:46
Как создать многомерный пустой или как не создавать. PashPP Общие вопросы Javascript 6 02.08.2012 21:49
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Как получить URL, в случае совпадения с условиями - создать div? Intruder Общие вопросы Javascript 3 27.05.2012 02:10
как создать собственную карту как в Google map Khazaryan Общие вопросы Javascript 1 20.03.2011 02:56