javascript到底有没有类的概念?

有的书上说有,有的书上说没有……还有,对象的prototype属性到底是什么原理?

没有! 不过 类 是什么要看你怎么定义了.js可以模拟类似java的class
每个对象都有个属性: prototype 就是原型咯 原型也是一个对象而已
js不是通过类来规范对象的属性和行为的,而已通过一个对象(原型对象)

* 标准化面向对象的代码 *
---------------------------------------------------------------------------
1.原型式继承
1) 原理: 对象的构造函数可以从其他对象中继承方法,它创建出一个原型对象后,所有
其他的新对象都可以基于这个原型对象来构建
2) 原型式继承的设计适用于单继承而非多继承
3) 使用示例:
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name;
}
function User(name, password){
this.name = name;
this.password = password;
}
User.prototype = new Person(); //关键代码!继承Person对象的所有方法
User.prototype.getPassword = function(){
return this.password;
}
2.类式继承
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
return this;
}
Function.method('inherits', function(parent){
var depth = 0;
var proto = this.prototype = new parent();

this.method('uber', function uber(name){
var func, ret, v = parent.prototype;

if(depth){
for(var i=depth; i>0; --i){
v = v.constructor.prototype;
}
func = v[name];
}else{
func = proto[name];
if(func == this[name]){
func = v[name];
}
}
++depth;
ret = func.apply(this, Array.prototype.slice.apply(arguments, [1]));
--depth;
return ret;
});
return this;
});
Function.method('swiss', function(parent){
for(var i=1,len=arguments.length; i<len; ++i){
var name=arguments[i];
this.prototype[name] = parent.prototype[name];
}
return this;
});

function Person(name){
this.name = name;
}
Person.method('getName', function(){
return this.name;
});
function User(name, password){
this.name = name;
this.password = password;
}
User.inherits(Person);
User.method('getPassword', function(){
return this.password;
});
User.method('getName', function(){
return 'My name is ' + this.uber('getName');
});
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-31
这个其实没必要去追究。有没有完全取决于你对类的定义是怎样的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网