什么应该是函数的返回所以得到Person对象?

时间:2018-04-23 08:37:17

标签: javascript jquery

你可以告诉我应该返回什么功能,这样在both案例中我会得到true

function Person(name){
      this.name = name;
      return false;

    }

    var p1 =new Person('ss')
    var p2 = Person('sdd')
    console.log(p1 instanceof Person)
    console.log(p2 instanceof Person)

目前我在true获取case而不是second所以应该返回什么,以便在这两种情况下我都会得到true

在第二种情况下,我不想使用new关键字..为什么你们投入了我..我知道使用new我可以创建对象。但我想知道如何不用{ {1}}关键字

2 个答案:

答案 0 :(得分:3)

您需要将p2作为Person的实例创建为var p2 = new Person('sdd'),然后它将返回true console.log(p2 instanceof Person)



function Person(name){
  this.name = name;
  return false;
}

var p1 =new Person('ss');
var p2 = new Person('sdd');
console.log(p1 instanceof Person);
console.log(p2 instanceof Person);




  

instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。

答案 1 :(得分:3)

您可以查看new.target并创建该功能的实例。

  

使用new.target属性可以检测是否使用new运算符调用了函数或构造函数。在使用new运算符实例化的构造函数和函数中,new.target返回对构造函数或函数的引用。在正常的函数调用中,new.targetundefined



function Person(name) {
    if (!new.target) {
        return new Person(name);
    }
    this.name = name;
}

var p1 = new Person('ss'),
    p2 = Person('sdd');

console.log(p1 instanceof Person);
console.log(p2 instanceof Person);