Javascript 如何创建函数的原型?

Javascript 如何创建函数的原型?,javascript,prototype,Javascript,Prototype,我试图通过玩控制台来理解对象和原型。当我尝试“圆圈”时,它给出了这个函数。但当我尝试Circle.prototype时,它给出了一个对象。Circle是如何获得原型属性的。它包含对象的构造函数和原型。有人能解释这个继承权吗 要使用您的代码创建一个圆,您可以使用新建圆(10),或者如果您想稍后使用该圆圈,var circ=new circle(10)。这将创建一个新的圆形对象供您随意使用 Circle是一个函数,另一种变量或对象。您设置了Circle,现在当您键入Circle时,它将返回函数本身。

我试图通过玩控制台来理解对象和原型。当我尝试“圆圈”时,它给出了这个函数。但当我尝试Circle.prototype时,它给出了一个对象。Circle是如何获得原型属性的。它包含对象的构造函数和原型。有人能解释这个继承权吗


要使用您的代码创建一个圆,您可以使用
新建圆(10),或者如果您想稍后使用该圆圈,
var circ=new circle(10)。这将创建一个新的圆形对象供您随意使用

Circle
是一个函数,另一种变量或对象。您设置了
Circle
,现在当您键入
Circle
时,它将返回函数本身。不是新的圈子。每个函数都有一些属性,
prototype
就是其中之一


prototype
对象是每个函数的一部分,用于处理类。你可以阅读它。

要使用你的代码创建一个圆圈,你可以使用
新建圆圈(10),或者如果您想稍后使用该圆圈,
var circ=new circle(10)。这将创建一个新的圆形对象供您随意使用

Circle
是一个函数,另一种变量或对象。您设置了
Circle
,现在当您键入
Circle
时,它将返回函数本身。不是新的圈子。每个函数都有一些属性,
prototype
就是其中之一


prototype
对象是每个函数的一部分,用于处理类。您可以阅读它。

当您创建新函数时,JS将创建具有属性名称、长度和原型的新函数对象。名称是函数名,长度是参数数,原型是对JS创建的新对象的引用,而构造函数属性是对第一个函数对象的引用。所以当你创建一个函数时,你实际上创建了两个新对象,函数对象和原型对象

有关更多信息,请参阅本30分钟讲座:


如果您只需要函数部分,请转至16:40分钟。

当您创建新函数时,JS将创建具有属性名称、长度和原型的新函数对象。名称是函数名,长度是参数数,原型是对JS创建的新对象的引用,而构造函数属性是对第一个函数对象的引用。所以当你创建一个函数时,你实际上创建了两个新对象,函数对象和原型对象

有关更多信息,请参阅本30分钟讲座:


如果只需要函数部分,请转到16:40分钟。

在Javascript中,函数是一个对象。每个对象都有一个“秘密”原型属性。 在您的例子中,圆圈的原型是函数的原型,因为圆圈是函数。 每个对象派生的根对象都是对象对象,因此如果您可以沿着原型链一直走到对象。 如果您打算使用Cirle作为构造函数并使用new调用它,这意味着您将创建其他对象,这些对象将成为Circle的实例,并且它们的原型将指向Circle.prototype。 关于原型如何工作的更详细解释,网上有很多很好的资源。 例如,您可以阅读以下内容:关于数据结构的章节:对象和数组


您可以通过执行Object.getPrototypeOf(Circle)来检查Circle的原型,以确认这将是函数原型。

在Javascript中,函数是对象。每个对象都有一个“秘密”原型属性。 在您的例子中,圆圈的原型是函数的原型,因为圆圈是函数。 每个对象派生的根对象都是对象对象,因此如果您可以沿着原型链一直走到对象。 如果您打算使用Cirle作为构造函数并使用new调用它,这意味着您将创建其他对象,这些对象将成为Circle的实例,并且它们的原型将指向Circle.prototype。 关于原型如何工作的更详细解释,网上有很多很好的资源。 例如,您可以阅读以下内容:关于数据结构的章节:对象和数组


你可以通过doing Object.getPrototypeOf(Circle)来检查Circle的原型,以确认这将是函数原型。

我认为当你读到有人写“每个对象都有原型属性”时,就会产生误解

Javascript中的函数是对象。与每个对象一样,函数也有一些属性和方法,其中一些是默认定义的:length属性、prototype属性、call()apply()和bind()方法等等。因此,默认情况下,函数具有原型属性

function Circle(radius) {
    this.radius = radius;
}
var myobj = new myfunc()
您将看到调用此属性所得到的值是一个对象。好了,现在就说到函数了

现在,您可以使用任何函数作为构造函数,这样您就可以创建一个新对象,与
new
关键字一起调用该函数

function myfunc(){
   return "yes I'm a function";
}

//I said that function are objects having properties and methods
//this means you can call them, for example
myfunc.prototype 
您将拥有一个新对象。默认情况下,此对象没有原型属性

function Circle(radius) {
    this.radius = radius;
}
var myobj = new myfunc()
我们不能谈论对象的原型属性:函数有原型属性,对象没有

但是,它与一个原型对象关联的每个对象都继承了属性和方法。你想看看原型对象的值是多少吗?解决办法之一是

myobj.proptotype //=> unefined
您将看到定制对象的原型对象的值

现在,看看
myobj.\uuuu proto\uuuu
的值和
myfunc.prototype
的值:它们是相同的。这仅仅意味着构造函数的prototype属性(换句话说,fu的prototype属性