Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 为什么要使用&x27;s的原型是一个函数,为什么对象从那里继承?_Javascript - Fatal编程技术网

Javascript 为什么要使用&x27;s的原型是一个函数,为什么对象从那里继承?

Javascript 为什么要使用&x27;s的原型是一个函数,为什么对象从那里继承?,javascript,Javascript,这有什么意义?例如,如果我们使用Number对象,我们可以看到他的原型(Number.\uu proto\uu)是函数。prototype包括apply和call等方法。如果Number的原型是空函数,而不是像所有其他原型一样的常规原型对象,那么如何使用Number.apply(..)?(数字原型、字符串原型、任何其他自定义原型都是对象。甚至Object.prototype也是对象) 在那之后,Object.\uuuu proto\uuuu==Function.prototype,这有什么意义呢

这有什么意义?例如,如果我们使用
Number
对象,我们可以看到他的原型(
Number.\uu proto\uu
)是
函数。prototype
包括
apply
call
等方法。如果Number的原型是空函数,而不是像所有其他原型一样的常规原型对象,那么如何使用
Number.apply(..)
?(数字原型、字符串原型、任何其他自定义原型都是对象。甚至Object.prototype也是对象)


在那之后,
Object.\uuuu proto\uuuu==Function.prototype
,这有什么意义呢?对象应该是最高的对象,它是如何从
函数继承的。当
函数继承时,prototype
<代码>对象。原型

Function.prototype // function Empty() {}

米克洛斯是对的,但更简单地说:


Object.\uuu proto\uuu==Function
意味着
Object
本身就是一个函数,因为它是构造函数。这并不意味着继承自
对象
的对象将继承
函数
。对象继承构造函数的
.prototype
,而不是它的
。\uuuuuuuuuuuuuuuuuuuuuuu

换句话说

Object instanceof Function // true
Function instanceof Object // of course true
Function instanceof Function // true
但这并不意味着
inst
继承了
函数.prototype
,您不能调用
apply
call

function Car (){}
inst = new Car ();
// inst inherits from Car.prototype
// inst.__proto__ == Car.prototype;
// Car inherits from Function.prototype because it is a function
// Car.__proto__ == Function.prototype;
另一个转折点

// This means that Everything that inherits from function will
console.log(`Function.prototype`) === function Empty() {}

米克洛斯是对的,但更简单地说:


Object.\uuu proto\uuu==Function
意味着
Object
本身就是一个函数,因为它是构造函数。这并不意味着继承自
对象
的对象将继承
函数
。对象继承构造函数的
.prototype
,而不是它的
。\uuuuuuuuuuuuuuuuuuuuuuu

换句话说

Object instanceof Function // true
Function instanceof Object // of course true
Function instanceof Function // true
但这并不意味着
inst
继承了
函数.prototype
,您不能调用
apply
call

function Car (){}
inst = new Car ();
// inst inherits from Car.prototype
// inst.__proto__ == Car.prototype;
// Car inherits from Function.prototype because it is a function
// Car.__proto__ == Function.prototype;
另一个转折点

// This means that Everything that inherits from function will
console.log(`Function.prototype`) === function Empty() {}


号码,原版?实例具有.\uuuu proto\uuuu属性,而不是constructor@JuanMendes,Number是一个实例。每个对象都有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。我想你的第二点在这里和它的注释中都提到了。我知道你在?实例具有.\uuuu proto\uuuu属性,而不是constructor@JuanMendes,Number是一个实例。每个对象都有
\uuuuu proto\uuuuu
。我想你的第二点在这里和它的注释中得到了解决。我知道你在问什么,在我的手机上键入答案。嗯,这是有道理的,但是
函数Empty(){}
呢?编辑:
Object.\uuuuu proto\uuuu==函数
将为false<代码>对象。uuu-proto\uuuuu直接指
空函数
或通过
函数。prototype
对象。uuu-proto\uuuu==函数。prototype
就像
汽车一样。uuu-proto\uu==函数。上述示例中的原型
。考虑一下
a=new Object()
a=new Function()
,每个构造函数都必须是一个函数,因此它将从
函数继承。prototype
@Luis它直接指向空函数,而不是“通过
函数.prototype
。两者都是对同一
空函数
函数对象的独立引用。如果重新分配
对象,则不会影响
函数.prototype
,反之亦然。突变当然对两者都是可见的,因为它们引用的是同一个对象。@Luis,还有什么问题没有回答吗
.prototype
仅在使用
new
调用
Constructor
函数时才起作用。这将创建一个扩展
构造函数.prototype
的新对象,
构造函数可以对新创建的对象进行初始化。因此,当您在构造函数上调用new时,将使用类似于
object.create(constructor.prototype)
的东西创建一个新对象,这意味着当您使用
new func()
创建一个对象时,首先它将转到func()(这是构造函数)它返回一个object+
\uuuu proto\uuu
属性,它是对func.prototype的引用,对吗?只是想确定一下。此外,
prototype
属性仅在
构造函数中(或者:在任何函数中,但只有构造函数真正使用它)。好吧,这是有意义的,但是
函数Empty(){}
呢?编辑:
Object.\uuuuu proto\uuuu==函数
将为false<代码>对象。uuu-proto\uuuuu
直接指
空函数
或通过
函数。prototype
对象。uuu-proto\uuuu==函数。prototype
就像
汽车一样。uuu-proto\uu==函数。上述示例中的原型
。考虑一下
a=new Object()
a=new Function()
,每个构造函数都必须是一个函数,因此它将从
函数继承。prototype
@Luis它直接指向空函数,而不是“通过
函数.prototype
。两者都是对同一
空函数
函数对象的独立引用。如果重新分配
对象,则不会影响
函数.prototype
,反之亦然。突变当然对两者都是可见的,因为它们引用的是同一个对象。@Luis,还有什么问题没有回答吗
.prototype
仅在使用
new
调用
Constructor
函数时才起作用。这将创建一个扩展
构造函数.prototype
的新对象,
构造函数可以对新创建的对象进行初始化。因此,当您在构造函数上调用new时,将使用类似于
object.create(constructor.prototype)
的东西创建一个新对象,这意味着当您使用
new func()
创建一个对象时,首先它将转到func()(这是构造函数),并返回一个object+
\u proto\u
属性,该属性是