为什么在继承对象之外声明原型函数?

时间:2015-09-15 16:29:11

标签: javascript prototype prototypal-inheritance

关于Javascript的继承实现有很多问题,虽然我没有找到答案为什么原型,在我看到的所有示例和答案中,都是在&#之外声明的34;类&#34 ;.此外,似乎无法使用this.prototype,这似乎与OOP背景的人不直观。

之间有什么区别:

function AClass() {
   AClass.prototype.AMethod = function(parms) { };
}

function AClass() { }
AClass.prototype.AMethod = function(parms) { };

2 个答案:

答案 0 :(得分:3)

差异与您可能放在函数内部或函数外部的任何其他语句完全相同。如果它在函数内部,则在调用函数时运行。

重新定义部分"类"没有意义。每次从它实例化一个对象。

答案 1 :(得分:1)

每次拨打AClass时,如果将AMethod放入功能范围内,则会重新定义imageView1 = (ImageView) findViewById(R.id.image1); imageView2 = (ImageView) findViewById(R.id.image2); imageView3 = (ImageView) findViewById(R.id.image3); View.OnClickListener listener= new View.OnClickListener() { @Override public void onClick(View v) { TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 50); animation.setDuration(1000); animation.setFillAfter(false); animation.setAnimationListener(new MyAnimationListener()); if(v==imageView1) imageView1.startAnimation(animation); else if(v==imageView2) imageView2.startAnimation(animation); else if(v==imageView3) imageView3.startAnimation(animation); x += 0; y += 50; } }; imageView1.setOnClickListener(listener); imageView2.setOnClickListener(listener); imageView3.setOnClickListener(listener); 。它减慢了代码速度。当您要创建具有重复功能的许多对象时,原型非常有用。以下是更详细研究相关讨论的类似问题Use of 'prototype' vs. 'this' in JavaScript?