function Foo() {
}
Foo.prototype.getName = function () {
alert(3);
};
var foo = new Foo();
foo.getName();
Foo.getName();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为Javascript查找属性或方法的顺序是先查找对象本身然后查找对象的原型链,并不会针对函数而查找函数的prototype属性的。
不是实例化也可以调用,你这样调用就行了:
而上面你的Foo.getName()是行不通的,Foo没有这个属性。
Foo.getName()
找法
1.找本身 没有getName方法
2.找__proto__,发现指向Function.prototype。
3.在Function.prototype上找,没找到
4.找在Function.prototype.__proto__,发现指向Object.prototype
5.在Object.prototype上找没找到,去Object.prototype.__proto__找
6.发现没有Object.prototype.__proto__
7.结束
foo.getName()
找法
1.找本身 没有getName方法
2.找__proto__,发现指向Foo.prototype
3.在Foo.prototype上发现getName方法
4.执行
///////
建议再研究下原型链相关知识