<强> javascript面向对象函数详解强>
<强>,,,js中的函数有三种表示方式:强>
//函数的第一种表示方式:函数关键字的方式 函数f1 () { 警报(f1); }//函数的第二种表示方式:函数字面量的方式 var f2=function () { 警报(f2); }//函数的第三种表示方式:构造函数的方式 var f3=新功能(“var=100;b=200;返回一个+ b;”); 警报(f3 ()); >之前,,,,,,函数的定义方式一般有以上三种,前两种方式基本没什么区别,第三种定义方式(()函数构造函数)每次执行时都解析函数主体,并创建一个新的函数对象,所以当在一个循环或者频繁执行的函数中调用函数()构造函数的效率是非常低的。相反,函数字面量却不是每次遇到都重新编译的。一般不会采用第三种方式。
另外,分别执行<强>警报(f1.constructor);警报(f2.constructor);警报(f3.constructor); 强>都会出现同样的效果,如下:
f1.constructor f2.constructor, f3。构造函数都是一个对象,为函数,这里可以这样理解,这三个函数f1, f2, f3都是通过函数的形式产生的,所以他们的构造器就是函数,由此也可以推出这三种函数的产生方式其实内部原理是一样的。
在JavaScript中,每个具有原型的对象都会自动获得构造函数属性。对象的构造函数属性用于返回创建该对象的函数,也就是我们常说的构造函数。实际上,在js中,每一个函数都是一个函数对象。
<强>总结:强>
<强> 1,在js中一切皆对象,强>
<强> 2,在js中对象有一个属性为构造函数;强>
<强> 3,在js中,凡是函数都是构造器对象强>
另外,从面向对象的角度来理解,上面实例中f1是一个函数,同时它也是一个对象,构造函数可以理解为它的一个属性,并且这里可以利用该对象的构造函数属性找到它的构造函数。
可以为f1这个对象动态的添加属性:
//给f1对象添加一个属性为b值为5 f1。b=5; 警报(f1.b);//给f1对象添加一个属性为bb, bb为对象,值为var f2=function(){警报(f2);} f1。bb=f2; 警报(f1.bb); >之前在js中,任何一个对象都有可能成为另一个对象的属性。
一个对象可以动态的添加任何一个属性,但是这个对象必须有值,不能是零和定义。
函数的人(){//做某事 } 函数P () {//做某事 } 函数(){//做某事 } 函数B () {//做某事 } 的人。一个=P; Person.a。b=一个; Person.a.b。c=B; Person.a.b.c。d=f2; 警报(Person.a.b.c.d);//正确,因为Person.a.b.c是有值的 警报(Person.a.b.c.d.e.f);//错误,不能为Person.a.b.c.d.e增加属性f,因为Person.a.b.c.d.e是未定义的 >之前感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
javascript面向对详象函数解及实例代码