为什么可以';我不能在函数中设置JavaScript原型吗?
为什么我不能在函数内部设置原型? 例如,为什么这不起作用为什么可以';我不能在函数中设置JavaScript原型吗?,javascript,prototype,Javascript,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.n
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
与Foo.prototype
不同。当使用new
调用Foo
时,其中对this
的任何引用都将引用正在创建的实例
this.prototype= barProto
不等于
Foo.prototype= barProto
此
引用将由new Foo()创建的特定对象
Foo是构造函数。在构造函数上设置原型,而不是在特定实例上
关于原型继承的更多信息,请点击这里:我大概明白你的意思了。但是我不希望创建的新对象具有原型barProto,对吗?原型是否仅在使用“新”时设置?为什么我不能在任何时候设置任何对象的prototype属性?我所说的与ben336完全相同。“为什么我不能在任何时候设置任何对象的prototype属性?”-这就是语言的工作方式。。。也许您更喜欢
var foo=Object.create(barProto)
?这同样有效,并且不需要Foo
构造函数或new
关键字。