我已经准备了很多博客文章和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
有何不同?
大致:
-
函数构造函数由JS引擎实现,您使用的引擎在本机代码中实现它(也许它们都实现了(。
-
定义";作品";;它创建了一个新函数(参见#1(,其中传递的字符串作为它的主体,如果运行返回的函数,它会爆炸,这不足为奇。如果您传入了一个有效的函数体,它工作正常,例如
> let obj3 = new person.constructor("console.log('hi')")
> obj3()
hi
- #1和#2回答这个问题