一个简单的js继承问题。。

jiashu912387 2011-01-17 02:59:21
function ss(){
this.dd(){
}
}

ss.prototype.cc=function(){

}

请问下 当ss()这个父对象被继承后 2个方法 dd()和 cc()有啥不同。。。越详细越好 谢谢
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
madpc 2011-01-18
  • 打赏
  • 举报
回复
prototype也能实现上面的效果
function ss(){
this.setX(0)
}
ss.prototype.setX=function(x){
var _x=x
this.getX=function(){
return _x
}

}
licip 2011-01-18
  • 打赏
  • 举报
回复
1楼说的真好。
Crazywa 2011-01-18
  • 打赏
  • 举报
回复
由于闭包的原因,dd享受获取构造函数内部变量的特权,而prototype则没有。
所以可以用来模拟私有变量。
function class1(){
var x = 0;
this.setX = function(val){x = val;};
this.getX = function(){return x;};
}
madpc 2011-01-18
  • 打赏
  • 举报
回复
首先,new 不叫继承,而叫实例化
对像内当然用的是this, 所以用 this.dd()
jiashu912387 2011-01-17
  • 打赏
  • 举报
回复
1:s.ff();又或者 2:和this.ff();2种方式 那个更好点。、。。
jiashu912387 2011-01-17
  • 打赏
  • 举报
回复
还有这样比如
var s= new ss();
function ss(){
this.dd=function(){}
}
ss.prototype.cc=function(){
1:s.dd();
2:和this.dd();是否可以 或者this.dd()根本就不可以?
}
ss.prototype.ff=function(){
1:s.ff();
2:和this.ff();区别。。。不晓得 大家明白我的意思不。。。}


jiashu912387 2011-01-17
  • 打赏
  • 举报
回复
也就是说 排除 性能和加载顺序 静态方法 和用prototype声明的方法 调用和继承的都是一样的?
yhtapmys 2011-01-17
  • 打赏
  • 举报
回复
继承后,如果父类是一个类,则会继承其属性,方法(包括用prototype声明的),静态方法,否则只有属性和方法。
====================================


prototype对象是个模版,要实例化的对象都以这个模版为基础.

总而言之,prototype对象的任何属性和方法都会被传递到那个类的所有实例,原型链利用这种功能来实现继承机制.

查看以下代码:

function ClassA(){

}

ClassA.prototype.color='red';
ClassA.prototype.getColor=function(){
document.write(this.color);
}

function ClassB(){

}

var a= new ClassA();
ClassB.prototype = a;
原型链的神奇之处在于最后一句代码.这里把ClassB的prototype属性设置成ClassA的实例,这样就将ClassA的所有属性和方法逐个赋值给了ClassB的prototype属性.

我们这样理解:

现在实例a有以下属性:color

实例a有以下方法:getColor

那么将a赋值给ClassB.prototype之后,ClassB的原型也就有了color属性和getColor方法.

那么在实例化ClassB的实例时,作为ClassB的原型,会将自身所有的方法和属性都传递给ClassB的实例,从而实现了继承.

http://www.cnblogs.com/guowei1027/archive/2009/12/15/1624251.html

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧