Как добавить свойства в «новый» экземпляр? - PullRequest
2 голосов
/ 03 августа 2011

Как добавить свойства к экземпляру new function?

Например:

function Constructor() {
    this.color = "red";
}

var s = new Constructor() {
    this.color = "blue";
    this.height = 30px;
}

Когда вызывается s.height, я получаю неопределенный результат.Как правильно выполнить это?

Ответы [ 4 ]

3 голосов
/ 03 августа 2011
function Constructor() {
   this.color = "red";
}

var s = new Constructor();
s.color = "blue";
s.height = 30px;
2 голосов
/ 03 августа 2011

Это действительно зависит от того, что вы пытаетесь сделать.

Если в вашем примере s является единственным экземпляром Constructor, который будет иметь свойство height, то сделайте это следующим образом:

function Constructor() {
  this.color = "red";
}

var s = new Constructor() 
s.height = 30px;

, если вы хотите добавить свойство высоты ко всем экземплярам Constructor, тогда сделайте это так:

function Constructor() {
  this.color = "red";
}

Constructor.prototype.height = 30px;

var s = new Constructor();

, если вы хотите новый Constructor с высотой вбыть в состоянии быть реализованным, тогда сделайте это так:

function Constructor() {
  this.color = "red";
}

function ConstuctorWithHeight(){
  this.height = 30px;
}

ConstuctorWithHeight.prototype = new Constructor();

var s = new ConstuctorWithHeight();
2 голосов
/ 03 августа 2011
function Constructor(options){
    for(var key in options){
        this[key] = options[key];
    }
}

var s = new Constuctor({color: "red",height: "30px"});

или

function Constructor(color,height){
    this.color = color;
    this.height = height;
}

var s = new Constuctor("red","30px");
2 голосов
/ 03 августа 2011

Это синтаксическая ошибка. За вызовом new Constructor() не должны следовать фигурные скобки, и на новый экземпляр следует ссылаться напрямую. также для определения конструктора необходимо ключевое слово function

function Constructor() {
  this.color = "red";
}

var s = new Constructor() 

s.color = "blue";
s.height = 30px;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...