为什么对象的属性未定义?

时间:2019-12-23 13:49:17

标签: javascript oop object constructor properties

我想说的是,如果我不使用 new 进行呼叫,请不要执行此行

this.price = price

我创建了构造函数并创建了属性 price 然后创建了对象 prod1 。我使用 new 关键字将其命名。 我预计输出为200,但 undefined

let Prodcut = function(price) {
    if (!new.target)
        throw this.price = price;
};

let prod1 = new Prodcut("200");
console.log(prod1.price);

注意:

  1. 我在视频[https://www.youtube.com/watch?v=f5wGZiYVfjk&list=PL7pEw9n3GkoW0ceMeoycg9D00YjPAbtvt&index=2&t=190s]
  2. 中看到了它
  3. 我搬家时
this.price = price 

说到下一行  “'throw'及其表达式之间不允许换行”

2 个答案:

答案 0 :(得分:1)

由于您需要检查是否已使用关键字new调用了构造方法,因此我认为情况应该有所改变。因为如果在没有属性的情况下调用构造函数,则会放置该属性。你可以试试这个

let Prodcut = function(price) {
    if (new.target)
        this.price = price;
};

let prod1 = new Prodcut("200");
console.log(prod1.price);

答案 1 :(得分:-1)

您好,我相信您的问题可以提供更多详细信息,但是查看您想做什么,也许可以尝试

function Product(price) {
  this.price = first;
}

然后

let prod1 = new Product(200);
console.log(prod1.price); // should be 200