你能写Javascript对象初始化速记C#风格吗?
我有以下Javascript:你能写Javascript对象初始化速记C#风格吗?,c#,javascript,C#,Javascript,我有以下Javascript: function TestModel() { this.name = "Testvalue"; this.id = 0; } var test = new TestModel(); alert(test.name); 如果我想在不使用构造函数的情况下使用不同的参数初始化对象,我需要调用以下代码: var test = new TestModel(); test.name = "other value"; test.id = 5;
function TestModel()
{
this.name = "Testvalue";
this.id = 0;
}
var test = new TestModel();
alert(test.name);
如果我想在不使用构造函数的情况下使用不同的参数初始化对象,我需要调用以下代码:
var test = new TestModel();
test.name = "other value";
test.id = 5;
alert(test.name);
我想做的是类似于C#风格的事情:
但是,如果我在javascript中尝试类似的东西,它将不起作用
简而言之:我试图在不使用构造函数的情况下在一行中初始化一个对象。这在javascript中可能吗?这看起来最像C#语法:
function TestModel(name, id)
{
this.name = name || "TestValue";
this.id = id || 0;
}
var test = new TestModel("Your Name", 4638);
alert(test.name);
这是另一个给你的,就像KooiInc给出的一样,但有点更通用,还检查以确保传递的值是正确的类型
function TestModel(init) {
var defaults = {
name: "Bunyip",
id: 0
}
if (typeof init == 'object') {
for (var prop in defaults) {
if (defaults.hasOwnProperty(prop)) {
if (init.hasOwnProperty(prop) && typeof init[prop] == typeof defaults[prop]) {
this[prop] = init[prop];
} else {
this[prop] = defaults[prop];
}
}
}
} else {
for (var prop in defaults) {
if (defaults.hasOwnProperty(prop)) this[prop] = defaults[prop];
}
}
delete defaults;
}
var test1 = new TestModel( { name:'testvalue1',id:1 } );
var test2 = new TestModel( { name:'testvalue2',id:2 } );
(+1)您也可以说
this.name=name | | |“TestValue;”
来保存行“不使用构造函数”是什么意思?您已经在使用构造函数。这看起来与我想要的最接近。我需要写一些东西(同时将我的C#转换为javascript)。谢谢。
function TestModel(init)
{
init = init || {};
this.name = init.name || "Testvalue";
this.id = init.id || 0;
}
var test1 = new TestModel( { name:'testvalue1',id:1 } );
var test2 = new TestModel( { name:'testvalue2',id:2 } );
function TestModel(init) {
var defaults = {
name: "Bunyip",
id: 0
}
if (typeof init == 'object') {
for (var prop in defaults) {
if (defaults.hasOwnProperty(prop)) {
if (init.hasOwnProperty(prop) && typeof init[prop] == typeof defaults[prop]) {
this[prop] = init[prop];
} else {
this[prop] = defaults[prop];
}
}
}
} else {
for (var prop in defaults) {
if (defaults.hasOwnProperty(prop)) this[prop] = defaults[prop];
}
}
delete defaults;
}
var test1 = new TestModel( { name:'testvalue1',id:1 } );
var test2 = new TestModel( { name:'testvalue2',id:2 } );