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,又会出现什么?

解决方案 »

  1.   

    效果相同
    但第一种写法不可取
    每构造一次都要新构造一个函数赋值给原型链如果不写this,直接retunr name; 第一种写法不会出错,第二种写法将出错,这是变量作用域的原因了
      

  2.   

    第一种写法和第二种写法执行结果相同,但第一种写法效率低于第二种
    第一种把原型方法放到了构造函数里面,每new一个对象时,就会重新创建一个getName,体现不出原型的优势了
    如果没有this就输出不了name了,访问对象的属性必须得用对象.属性名
      

  3.   

    return this.name;
    这里的this指向函数调用者,就是说将返回函数调用者的name属性。如果去掉this,那么将返回一个全局变量name(因为getName函数内部没有定义name变量,它必然会查找全局变量);如果没有定义全局变量name,将返回一个未定义undefined。至于两种prototype用法,我只见过第二种。