Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS构造函数的prototype属性与它的区别';s原型_Javascript - Fatal编程技术网

Javascript JS构造函数的prototype属性与它的区别';s原型

Javascript JS构造函数的prototype属性与它的区别';s原型,javascript,Javascript,建造商: function Team (type) { this.type = type; } //this will output this empty object inherited from Object.property console.log(Team.prototype); -> Team {} //this one outputs nothing in my console console.log(Object.getPrototypeOf(Team)); //is

建造商:

function Team (type) {
  this.type = type;
}

//this will output this empty object inherited from Object.property
console.log(Team.prototype);
-> Team {}

//this one outputs nothing in my console
console.log(Object.getPrototypeOf(Team));
//is it inheriting from this one, the one for all functions?
-> Function.prototype //??
.prototype
属性和
对象.getPrototypeOf
之间有什么区别?
除了存储属性外,Function.prototype(所有函数和构造函数继承自的)prototype还能做什么

Team
是一个函数,因此它继承了
function.prototype
的所有属性<代码>函数也是一个(继承自)
对象
,因此它具有
对象.prototype的所有属性。
但是,
对象.getPrototypeOf
是对象上的一个“静态”方法,因此它不是继承的


Object.getPrototypeOf(团队)
指向与
Function.prototype
相同的对象<代码>团队。getPrototypeOf未定义

问题是“为什么
Team
有属性
getPrototypeOf
”?问题是
Team.prototype
Team.getPrototypeOf
之间有什么区别。我想你需要
console.log(Object.getPrototypeOf(Team))
查看所有函数从中继承的对象。@StevensHaen
Object.getPrototypeOf()
返回实例从中主动继承的对象。函数的
prototype
属性是该函数的
new
实例将继承的内容。所以,
var t=newteam();log(Object.getPrototypeOf(t)==Team.prototype)。构造函数本身就是新函数
s,继承自
Function.prototype
@StevensHaen:呃,这是因为
Function.prototype=Function(){}
(出于可疑的原因,但是)。该函数对象确实具有预期的属性,如
call
apply
bind
等。人们说JS中的函数是对象,但它们不是,因为您无法检查它们的属性。他们的例子是。为什么
Team.getPrototypeOf
在我的控制台中导致
未定义
?是的函数是对象<代码>(函数(){})对象的实例outuputs true。是的,你可以检查它的属性<代码>变量a=函数(){};a、 b=1;console.log(a.b)输出1。您需要澄清您的问题。例如,您不能直接从函数访问属性(
function Team(type){this.type=type;}
Team.type()
不起作用),而是它的一个实例-(
var Team=Team();
Team.type()
起作用)。您可能是指
Object.getPrototypeOf(Team)==Function.prototype
和最后一句话
Team.prototype!==Function.prototype
Team.prototype
是一个全新的对象,大致就像您编写的
Team.prototype={}
一样。