日期:2014-05-16  浏览次数:20328 次

求高手指点,js中prototype的用法
function A(name){
  this.name = name;
  A.prototype.getName = function(){
  return this.name;
  }
};

function B(name){
  this.name = name;
};
B.prototype.getName = function(){
  return this.name;
}

这两种写法有什么区别啊?portotype什么时候动态绑定。 在getName中如果不写this,又会出现什么?

------解决方案--------------------
第一种写法和第二种写法执行结果相同,但第一种写法效率低于第二种
第一种把原型方法放到了构造函数里面,每new一个对象时,就会重新创建一个getName,体现不出原型的优势了
如果没有this就输出不了name了,访问对象的属性必须得用对象.属性名
------解决方案--------------------
return this.name;
这里的this指向函数调用者,就是说将返回函数调用者的name属性。如果去掉this,那么将返回一个全局变量name(因为getName函数内部没有定义name变量,它必然会查找全局变量);如果没有定义全局变量name,将返回一个未定义undefined。

至于两种prototype用法,我只见过第二种。。。。