来自c家族语言(我使用c#)使得Javascript模型在某种程度上令人困惑。
在c#中你必须有一个班级。然后从该类实例化该对象以使用它。
在Javascript中没有课程。这完全是关于功能的。函数本身就是一个对象,它可以直接使用而无需实例化。
例如:
function sayHi(name){
alert ("hiiiii " + name);
}
sayHi("John");
所以函数sayHi已经是一个对象并实例化并正常工作!!
现在,如果您想访问其属性原型,可以执行以下操作:
function sayHi(name){
alert ("hiiiii " + name);
}
sayHi.prototype.nn = 20;
sayHi("John");
alert(sayHi.nn);
但上面的代码将无法提醒nn为20;它会给出undefined !!
但是如果你将sayHi函数作为另一个变量的构造函数,那么这个prototype属性将像以下一样可访问:
function sayHi(name){
alert ("hiiiii " + name);
}
sayHi.prototype.nn = 20;
sayHi("John");
alert(sayHi.nn);
var hi2 = new sayHi("May");
alert(hi2.nn);
现在alert(hi2.nn)
给你20;这意味着sayHi的原型在我们使用单词new
将其分配给另一个变量进行实例化之前无法访问。
我的问题:
sayHi
已经是Function
个对象;什么
是除了它之外使其prototype
无法访问的目的
是另一个变量的构造函数吗?