Javascript 原型继承理解
我有以下代码:Javascript 原型继承理解,javascript,Javascript,我有以下代码: var Class = function(){ // function constructor this.className = 'Class'; } Class.prototype.method = function(){ // open method alert('method of ' + this.className); } var ClassSub = function(){ // function constructor of sub class this.clas
var Class = function(){ // function constructor
this.className = 'Class';
}
Class.prototype.method = function(){ // open method
alert('method of ' + this.className);
}
var ClassSub = function(){ // function constructor of sub class
this.className = 'ClassSub';
}
ClassSub.prototype = new Class();
var objSub = new ClassSub();
objSub.method();
我有一个问题:Class.prototype.method=function(){//openmethod
当我们这样写的时候,我们说我们类的原型将有这个方法。
所以他的子类将使用这个方法。
但我不明白的是
为什么我们不能写
Class.method = function()
如注释中所述,
Class.method
为变量Class
创建属性,而不是Class
的实例
var Class = function () { /* some code */ }
Class.method = function () { }
console.log(Class.method); // function () { }
console.log(new Class().method); // undefined
Class.prototype.method = function () { }
console.log(new Class().method); // function () { }
如注释中所述,
Class.method
为变量Class
创建属性,而不是Class
的实例
var Class = function () { /* some code */ }
Class.method = function () { }
console.log(Class.method); // function () { }
console.log(new Class().method); // undefined
Class.prototype.method = function () { }
console.log(new Class().method); // function () { }
Class.method=function(){};
这只会在构造函数类上添加方法属性。函数是对象,可以像任何其他对象一样保存数据。但是,不将方法函数添加到类实例的原因很简单:这不是在中实现原型继承的方式JavaScript
您应该阅读并理解原型链是如何设置的,以及为什么向构造函数添加成员不会影响使用此构造函数创建的实例
我认为还值得一提的是,ClassSub.prototype=newclass();
不是设置原型链的有效方法,因为它将运行类
构造函数的代码
在现代浏览器中,您可以简单地使用对象。创建并为旧浏览器提供垫片
ClassSub.prototype=Object.create(Class.prototype);
Class.method=function(){};
这只会在构造函数类上添加方法属性。函数是对象,可以像任何其他对象一样保存数据。但是,不将方法函数添加到类实例的原因很简单:这不是在中实现原型继承的方式JavaScript
您应该阅读并理解原型链是如何设置的,以及为什么向构造函数添加成员不会影响使用此构造函数创建的实例
我认为还值得一提的是,ClassSub.prototype=newclass();
不是设置原型链的有效方法,因为它将运行类
构造函数的代码
在现代浏览器中,您可以简单地使用对象。创建并为旧浏览器提供垫片
ClassSub.prototype=Object.create(Class.prototype);
语法将类视为普通函数对象,而不是类对象实例的构造函数。@Jeffman-请讲清楚。你指的是什么(指的是)?你的问题是什么?你是说使用classname.prototype.methodname
的原因是什么?为什么我们不使用classname.methodname
?语法将类视为普通函数对象,而不是类对象实例的构造函数。@Jeffman-请讲清楚。你指的是什么(指的是)?你的问题是什么?你是说使用classname.prototype.methodname
的原因是什么?为什么我们不使用classname.methodname
?我已经读过了,谢谢你…我想我需要一些时间来理解它…)我已经读过了,谢谢你…我想我需要一些时间来理解它…)