javascript – 在构造函数中分配原型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在构造函数中分配原型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1514字,纯文字阅读大概需要3分钟。
内容图文
我有这个代码:
var MyClass = function(b) {
this.a = b;
this.getA = function() {
return that.a;
}
}
var SecondClass = function(b) {
this.prototype = new MyClass(b);
this.getB = function() {
return 6;
}
}
var a = new SecondClass(2);
console.log(a.getA());
输出告诉我a没有名为getA()的方法
我假设在SecondClass的构造函数中执行this.prototype = new MyClass()会导致它从MyClass的inhert方法?
我确信有更好的方法可以做到这一点,但我试图理解prototype关键字的行为.
解决方法:
prototype是构造函数的特殊属性,而不是实例的特性.
当您使用新的Func()调用构造函数时,引擎将创建一个从Func.prototype继承的新对象,然后在构造函数内部设置它以引用新对象.
因此,除了this.prototype只是一个普通的属性,继承已经发生在赋值发生时.
由于您没有为MyClass.prototype分配任何方法,因此您不必在此处对原型继承执行任何操作.您所要做的就是使用.call [MDN]将MyClass应用于新创建的实例:
var SecondClass = function(b) {
MyClass.call(this, b);
this.getB = function() {
return 6;
}
};
但是,你应该add all methods that are shared by instances to the prototype然后让SecondClass的每个实例继承它.这就是完整设置的样子:
var MyClass = function(b) {
this.a = b;
}
MyClass.prototype.getA = function() {
return this.a;
};
var SecondClass = function(b) {
// call parent constructor (like 'super()' in other languages)
MyClass.call(this, b);
}
// Setup inheritance - add 'MyClass.prototype' to the prototype chain
SecondClass.prototype = Object.create(MyClass.prototype);
SecondClass.prototype.getB = function() {
return 6;
};
var a = new SecondClass(2);
console.log(a.getA());
所有这一切will become easier in ES6.
内容总结
以上是互联网集市为您收集整理的javascript – 在构造函数中分配原型全部内容,希望文章能够帮你解决javascript – 在构造函数中分配原型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。