十四(1)、函数的三种角色 ------ 2019-12-28

2019-12-28  本文已影响0人  自己写了自己看
function Fn () {
    var n = 10;
    this.m = 100;
}

Fn.prototype.aa = function () {
    console.log('aa');
}

Fn.bb = function () {
    console.log('bb');
}
// (1)普通函数:
Fn (); // this: window;有个私有变量 n 和原型以及属性 bb 没有关系;

// (2)构造函数执行:
var f = new Fn();
console.log(f.n); // undefined n是私有变量,和实例没有任何关系;
console.log(f.m); // 100 m是实例的私有属性;
f.aa(); // aa 实例通过 __proto__ 找到Fn.prototype上的方法;
console.log(f.bb); // undefined; bb是把Fn当做一个普通的对象设置的属性而已,
// 和实例没有任何关系;

// (3)、普通对象:
Fn.bb(); // bb;只有 bb 和 prototype是Fn作为对象的属性;
Number函数的角色.png
上一篇 下一篇

猜你喜欢

热点阅读