一个笔试题

需求:

new Login().getUserName() 和Login().getUserName()分别返回什么?

 //定义了函数
function getUserName() {
  return 'window.cmschina';
}

function Login() {
   //这里赋值是赋值window下的getUserName
  getUserName = function () {
    return 'cmschina';
  };
  return this; // 这里的this其实是window
}
 // 给Login的getUserName赋值
Login.getUserName = function () {
  return 'cms';
};

 // 给Login原型添加getUserName方法
Login.prototype.getUserName = function () {
  return 'china'
};

new Login().getUserName()
new Login() 实例login对象,调用getUserName()方法,其实就是调用原型上的getUserName方法,所以返回值是china

Login().getUserName()
Login()调用,返回值是this,其实就是window,因为Login()的返回值是this,Login调用的过程会给window.getUserName 赋值匿名函数,而该函数返回值是cmschina

你可能感兴趣的:(一个笔试题)