Создание объекта при помощи Литеральной нотации JavaScript
Такой вопрос созданю например объект
t={
name:'test',
value: '1',
f:function(){...}
}
потом потом хочу например так
t2= new t;
это возможно ??????????
И вопрос как передать дополнительные параметры ????
например так можно
t2= new t({a:'1',b:'2'});
В итоге t2.a будет равно 1???????????
Код:
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
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
мне интересно как передать данные если объкт создан Литеральной нотацией
В вашем случае можно использовать объект в качестве аргумента, для создания нового объекта:
Код:
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
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() выступает в качестве прокси, которые позволяет добиться желаемого результата