javascript - 为什么我不能在函数内设置 JavaScript 原型(prototype)?

标签 javascript prototype

为什么我不能在函数内部设置原型(prototype)? 例如,为什么这不起作用?

var Bar = function(){
   this.name='Bar'
}

var barProto = new Bar()  

var Foo = function(){
    this.prototype= barProto
}

var foo = new Foo()
console.log(foo.name) // undefined

但这确实有效:

var Bar = function(){
   this.name='Bar'
}

var barProto = new Bar()  

var Foo = function(){

}

Foo.prototype= barProto

var foo = new Foo()

console.log(foo.name) // Bar

我不喜欢在创建函数后分配原型(prototype)的语法。

最佳答案

this.prototype= barProto

不等同于

Foo.prototype= barProto

this 指的是将由 new Foo() 创建的特定对象

Foo 是构造函数。您在构造函数上设置原型(prototype),而不是在特定实例上。

更多关于原型(prototype)继承的信息在这里:Mozilla docs

关于javascript - 为什么我不能在函数内设置 JavaScript 原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880140/

相关文章:

javascript - 将移动设备重定向到移动子域

使用带有原型(prototype)的 setInterval 的 JavaScript 上下文问题

javascript - 如何使用 AngularJs 从弹出窗口将客户添加到表中?

javascript - 条形图不适合图表区域

javascript - 替换 javascript 正则表达式中的标签

JavaScript 遍历对象属性和原型(prototype)链

javascript - 为新遗物追踪扩展 catch 原型(prototype)

javascript - Canvas 对象和另一个对象内的多个实例?

javascript - 如何用自定义函数替换javascript原型(prototype)

javascript - 从 javascript 访问 dom-if 内的 dom-repeat