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
对ecmascript 中 prototype的理解
最新推荐文章于 2021-04-14 10:52:32 发布