function.constructor vs function.prototype.constructor



我已经准备了很多博客文章和stackoverflow问题,但无法很好地理解这一点。

为什么需要设置原型构造函数?

试图理解JavaScript 中原型和构造函数之间的区别

JavaScript对象中的构造函数

JavaScript继承和构造函数属性

理解Object.create((和new SomeFunction((之间的区别

问题

function person(fname) {
this.fname = fname;
}
let obj1 = new person('first'); //works well
console.log(obj1);
let obj2 = new person.prototype.constructor('second'); //works well
console.log(obj2);
//now the query
console.log(person.constructor); //1. it prints  function Function() { [native code] } what does it mean
let obj3 = new person.constructor('third') // 2. why this doesn't work ?
console.log(obj3); //

现在我们知道,javascript中的每个函数都有一个名为prototype的属性,它是一个object,它有一个称为constructor的属性,指向函数,原型对象是该函数的属性如果我对此有错,请纠正我

所以根据上面的说法person.prototype.constructor==person(两者相同(

查询:1person.constructor打印function Function() { [native code] }是什么意思,请详细解释。

查询:2为什么此new person.constructor('randon')不起作用?

查询:3person.constructor究竟是什么?它与person.prototype.constructor有何不同?

大致:

  1. 函数构造函数由JS引擎实现,您使用的引擎在本机代码中实现它(也许它们都实现了(。

  2. 定义";作品";;它创建了一个新函数(参见#1(,其中传递的字符串作为它的主体,如果运行返回的函数,它会爆炸,这不足为奇。如果您传入了一个有效的函数体,它工作正常,例如

> let obj3 = new person.constructor("console.log('hi')")
> obj3()
hi
  1. #1和#2回答这个问题

相关内容

最新更新