请查看以下简单代码的nsnippet: -
function Fis(){
}
Fis.num =20;//no errors
console.log(Fis.num);//prints 20
现在,我知道Fis函数是隐式的(从一开始)通过“Fis.prototype”链接链接到一个对象。
在代码中,Fis.num = 20正在执行而没有任何错误。这个num属性在哪里被链接?
答案 0 :(得分:0)
您的Fis()
函数实际上是您可以为其指定属性的对象。在您的情况下,您将num
属性的值20
定义为Fis
。因此,当您使用Fis
将此属性指定给Fis.num=20
时,请将其链接起来。因此,您可以按Fis.num
获取属性值。
答案 1 :(得分:0)
在JavaScript中,每个函数都是一个对象:
var fn = function () {};
fn.foo = 'bar'; // add property to object
for (var index in fn) {
// read properties from object
if (fn.hasOwnProperty(index)) {
console.log(fn[index]);
}
}

除此之外,每个函数对象都有一个prototype
属性,它本身就是一个对象。以正常方式调用函数时,此prototype
属性无效。但是当你使用new
调用函数时,JS会创建一个新对象,其原型是函数的prototype
属性。然后它用新创建的对象调用该函数并返回它:
var Func = function (baz) {
console.log(this.foo + baz); // "barabc"
}
Func.prototype.foo = "bar";
var object = new Func("abc");

在这种情况下,该函数也称为类的构造函数,新对象称为此类的实例。
在MDN上阅读有关原型链的更多信息。