Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание объекта при помощи Литеральной нотации JavaScript

345
14 января 2012 года
vadim_k
312 / / 01.08.2006
Привет всем

Такой вопрос созданю например объект

t={
name:'test',
value: '1',
f:function(){...}
}

потом потом хочу например так
t2= new t;
это возможно ??????????

И вопрос как передать дополнительные параметры ????

например так можно
t2= new t({a:'1',b:'2'});

В итоге t2.a будет равно 1???????????
285
14 января 2012 года
Romik
479 / / 24.11.2002
Объекты можно создавать по разному. Вам нужен объект с конструктором, используйте функцию и prototype, если потребуется.
 
Код:
var T=function(arg) {
  for(var i in arg) {
     this=arg;
  }
}

var t=new T({'a':1, 'b':2});

console.log(t.a); // 1
console.log(t.b); // 2


Рекомендую почитать Understanding JavaScript OOP
345
14 января 2012 года
vadim_k
312 / / 01.08.2006
Спасибо но это немножко не то

мне интересно как передать данные если объкт создан Литеральной нотацией
285
14 января 2012 года
Romik
479 / / 24.11.2002
Через new можно создавать экземпляры функций, но не объектов, new возвращает объект.
В вашем случае можно использовать объект в качестве аргумента, для создания нового объекта:
Код:
var T={
  name:'test',
  value: '1',
  f:function(){/*...*/}
}

var F=function() {
   var input = arguments[0] || null;
   var ext = arguments[1] || null;
   if (null==input) throw "Need input argument";
   for(var i in input) {
      this = input;
   }
   if (null != ext) {
      for(var i in ext) {
         this = ext;
      }
   }
}

var t = new F(T);
console.log(t);
//  F
//     f: function (){/*...*/}
//     name: "test"
//     value: "1"

var k=new F(T, {value:2, a:1});
console.log(k);
// F
//   a: 1
//   f: function (){/*...*/}
//   name: "test"
//   value: 2


т.е. тут F() выступает в качестве прокси, которые позволяет добиться желаемого результата
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог