首页 > 求大佬救命
头像
蝼蚁也想变强啊
编辑于 2021-08-05 16:59
+ 关注

求大佬救命

function Fn() {
  say = function () {
    console.log(1);
  };
  return this;
}
Fn.say = () => {
  console.log(2);
};
Fn.prototype.say = () => {
  console.log(3);
};
var say = () => {
  console.log(5);
};
function say(paras) {
  console.log(4);
}
new Fn().say(); //new访问原型链 3
Fn.say(); //直接访问静态方法 2无疑
say();
/*
1 --要有Fn()才行:因为在默认情况下say是挂载在window下的,当执行Fn()时,赋值操作执行,进行了挂载,所以可以进行访问。还因为Fn()在var赋值操作后面,被覆盖了,故显示1,如Fn()在var前,则显示5
5 --无Fn():不执行Fn(),相当于没有了赋值操作,所以打印的时后面赋值的5
附:当出现相同名称时,优先级为:变量声明< 函数声明 < 变量赋值(NO.1)
*/ 
Fn().say(); //因为返回了this,相当于this.say() //1

//加上this.
function Fn() {
  this.say = function () {
    console.log(1);
  };
  return this;
}
new Fn().say(); 
//1 加上this后,say是挂载在Fn()的构造器上的,根据new的寻找规则,先构造器后原型,在原型链
Fn.say(); //2
say(); //5 因为没有在全局上挂载了,所以显示后面赋值的5
Fn().say(); //1

全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐