Javascript原型属性';

Javascript原型属性';,javascript,prototype-chain,Javascript,Prototype Chain,我遵循javascript中关于“函数构造函数”和“原型链”的逻辑,但是我试图解决原型链在需要时的重要性 函数构造函数对于创建对象很有用,-对吗?因此,在使用“函数构造函数”创建对象时,该对象是否还没有指向链中更高位置的“全局对象”的指针。。。如果是这样的话,为什么还要包括这个“原型属性”?或 prototype属性是否实际“实例化”了将函数对象链接到全局对象的继承链 如果prototype属性没有实例化对象的本地和全局上下文之间的链接,那么为什么要包含它呢?如果我从函数构造函数的属性列表中省略

我遵循javascript中关于“函数构造函数”和“原型链”的逻辑,但是我试图解决原型链在需要时的重要性

函数构造函数对于创建对象很有用,-对吗?因此,在使用“函数构造函数”创建对象时,该对象是否还没有指向链中更高位置的“全局对象”的指针。。。如果是这样的话,为什么还要包括这个“原型属性”?或 prototype属性是否实际“实例化”了将函数对象链接到全局对象的继承链

如果prototype属性没有实例化对象的本地和全局上下文之间的链接,那么为什么要包含它呢?如果我从函数构造函数的属性列表中省略prototype属性,会有什么变化

我只需要在prototype属性的目的背后有一个清晰、简洁的理由,这在这一点上是有意义的,但在它如何影响继承链方面仍然没有意义


感谢阅读。

如果执行以下代码行

function Dog(){
    this.constBreed = "Pug";
}
Dog.prototype.breed = "Bull";

var newDog = new Dog();

console.log(newDog);
日志将给出以下结果

Dog {constBreed: "Pug"}
    constBreed: "Pug"
    __proto__:
        breed: "Bull"
        constructor: ƒ Dog()
        __proto__: Object
这里,构造函数变量“constbride”直接附加到“newDog”对象,原型属性“bride”转到proto

这非常有用,因为我们可以从Dog()函数中创建多个新的Dog变量,只需更改protopye.breed of Dog()函数本身,就可以同时更改所有变量的种类

在构造函数变量“constbride”的情况下,它只会被复制并为您从Dog()函数创建的每个新对象进行新的初始化

我只需要在prototype属性的目的背后有一个清晰、简洁的理由,这在这一点上是有意义的,但在它如何影响继承链方面仍然没有意义

让我们以这段代码为例:

函数Foo(prop){
this.fooProperty=prop
}
Foo.prototype.greetFoo=函数(){
console.log('hifromfoo')
}
功能条(prop1、prop2){
调用(此,…参数)
this.barProperty=prop2
}
//将默认的Bar.prototype对象替换为链接到Foo.prototype的对象
Bar.prototype=Object.create(Foo.prototype)
Bar.prototype.greetBar=函数(){
console.log('hi from bar')
}
const barInstance1=新条('baz','rar')
const barInstance2=新条('qum','yas')
barInstance1.greetFoo()
barInstance2.greetFoo()
barInstance1.greetBar()

barInstance2.greetBar()
Hi,因此,如果我在编写构造函数时忽略了任何原型属性,那么当我在该函数下创建新对象时,这些对象将直接引用构造函数和全局对象toString()等,但不会像包含原型属性时那样可共享,正确吗?…另一方面,如果我包含prototype属性,则可以使用prototype关键字链接其他函数?是的,完美!!这正是它发生的方式,我们可以利用它。我很难概念化原型关键字概念的直接意义。如果创建一个新对象,为什么不使用new关键字并保持不变呢?或者,如果更改构造函数的对象,为什么不更改对象标题呢。使用原型如何节省时间。。如果在构造函数中需要一个新方法,为什么不在构造函数中写一个新方法呢?我有点困惑的地方是分享部分。你能为我简化这个过程吗?我想我们应该注意的一个重要的问题是,prototype关键字可能不会节省时间,但它会节省大量内存,因为当我们使用“new”时,构造函数中的所有内容都会被复制,并且会为它们分配新的内存资源,但是,原型中的所有内容都只会被引用,并且没有正确地利用新的内存资源。我们还知道,每个基本的js基函数,如map、filter、toString等,实际上都是这个“原型”的结果,并且节省了大量内存,因为它们可以在所有变量中访问。感谢您的帮助。我对第一个答案投了赞成票,因为其他OOP语言和javascript之间的区别填补了我知识上的一些空白,帮助我更好地理解这个“原型”表达式。你的帮助HugeBelieve也帮助我稍微扩展了我的知识,所以谢谢你。如果我可以的话,我会平分选票。