对ecmascript 中 prototype的理解

ecmascript 的原型理解 ,即prototype
1每个函数对象都有一个prototype的属性子对象,如果给该prototype属性赋值,那么此函数对象将会有prototype子对象拥有的属性和方法(此处好像不适合叫继承prototype子对象,没有父类继承子类一说吧,但父对象的确有了子对象的方法和属性),例如
function foo1()
{
}

foo1.prototype.fn = function(){ console.log(this.str); };
foo1.prototype.str ='fooooooo';
test_foo1 = new foo1();
test_foo1.fn();//output fooooooo

还有另一种方式给函数对象添加属性和方法
function foo1()
{
    this.str = 'fooooooo'
    this.fn = function(){console.log(this.str)};
}
test_foo1 = new foo1();
test_foo1.fn();//output fooooooo
继续
function foo2()
{
}
foo2.prototype = new foo1();
foo2_test = new foo2();
foo2_test.fn()//output fooooooo    显然foo2继承了foo1的方法和属性了,实际上是因为foo2.prototype有foo1的属性和方法,那么foo2当然也拥有和foo2.prototype子对象一样的方法和属行,更长远的看是因为foo2.prototype拥有foo1.prototype的方法和属性,再往上一直到拥有object.prototype的属行和方法
(请在firebug下调试)
也许这篇文章说的更详细点 http://msdn.microsoft.com/zh-cn/magazine/cc163419.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值