2016-11-16 2 views
0

Не уверен, что объект является тем, что я хочу, но я хочу создать что-то вроде этого.Объектный запрос Javascript

var thing = {a: 0, b: 0}; 
function fun() { 
    var mything = new thing(); 
    mything.a = 5; 
    mything.b = 7; 
    return mything; 
} 
var another = fun(); 

, а затем я мог бы использовать another.a и another.b в своем коде. Я работаю в javascript и довольно новичок в этом. Я знаю, что на других языках я бы создал структуру, но не знал, как это сделать. Спасибо заранее.

+0

Так что же вы хотите, потому что теперь я не понимая вас. –

ответ

0

thing в вашем примере - это объект, но не функция. Вы не можете назвать это функцией.

Для целей вашего примера вам нужно всего лишь mything быть объектом. Итак:

var mything = {}; 

Если вы хотите создать конструктор и использовать наследование, то см MDN's documentation on constructor functions или, если вы хотите использовать ES6, the documentation on Classes.

0

Я считаю, что function - это то, что вы хотите. Пожалуйста, ознакомьтесь с этой:

function thing() { 
 
    if (!(this instanceof thing)) { 
 
    return new thing(); 
 
    } 
 
    //properties with default value 
 
    this.a = 5; 
 
    this.b = 7; 
 
    return this; 
 
} 
 

 
//and you can call it either like this 
 
var foo = thing(); 
 
//or like this 
 
var bar = new thing(); 
 

 
//and both you can define their dependent property like this 
 
foo.a = 123; 
 
foo.b = 345; 
 

 
bar.a = "not number1"; 
 
bar.b = { 
 
    other: "result" 
 
} 
 
console.log(foo, bar);

0

Вы должны определить Thing используя класс синтаксиса (ES6) или функцию конструктора:

// Using ES6 syntax 

class Thing { 
    constructor() { 
    this.a = 5; 
    this.b = 7; 
    } 

    foo() { 
    // thing instance method (`this` === current instance) 
    } 
} 

// OR Using classic constructor syntax 

function Thing() { 
    this.a = 5; 
    this.b = 7; 
} 

Thing.prototype.foo = function() { 
    // thing instance method (`this` === current instance) 
}; 

И после того, как вы можете создать/выделить новые экземпляры с использованием new:

var thing = new Thing(); 

Или хорошо обернуть его с помощью фабричного метода, например:

// ES6 syntax 
class Thing { 
    // ... 
    static create() { 
    return new Thing(); 
    } 
} 

// Or attaching to Thing 
Thing.create = function factory() { 
    return new Thing(); 
} 

И называть его:

var things = Thing.create(); 
Смежные вопросы