javascript 面向对象function详解

js中的函数有三种表示方式:
//函数的第一种表示方式:函数关键字的方式
function f1() {
alert("f1");
}
//函数的第二种表示方式:函数字面量的方式
var f2 = function() {
alert("f2");
}
//函数的第三种表示方式:构造函数的方式
var f3 = new Function('var a = 100; b = 200; return a+b;');
alert(f3());
函数的定义方式一般有以上三种,前两种方式基本没什么区别,第三种定义方式(Function()构造函数)每次执行时都解析函数主体,并创建一个新的函数对象。所以当在一个循环或者频繁执行的函数中调用Function()构造函数的效率是非常低的。相反,函数字面量却不是每次遇到都重新编译的。一般不会采用第三种方式。
另外,分别执行alert(f1.constructor); alert(f2.constructor); alert(f3.constructor);都会出现同样的效果,如下:
f1.constructor,f2.constructor,f3.constructor都是一个对象,为Function,这里可以这样理解,这三个函数f1,f2,f3都是通过Function的形式产生的,所以他们的构造器就是Function,由此也可以推出这三种函数的产生方式其实内部原理是一样的。
在JavaScript中,每个具有原型的对象都会自动获得constructor属性。对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数。实际上,在js中,每一个function都是一个Function Object。
总结:
1、在js中一切皆对象;
2、在js中对象有一个属性为constructor;
3、在js中,凡是函数都是构造器对象
另外,从面向对象的角度来理解,上面实例中f1是一个函数,同时它也是一个对象,constructor可以理解为它的一个属性,并且这里可以利用该对象的constructor属性找到它的构造函数。
可以为f1这个对象动态的添加属性:
//给f1对象添加一个属性为b,值为5
f1.b = 5;
alert(f1.b);
//给f1对象添加一个属性为bb,bb为对象,值为var f2 = function() { alert("f2");}
f1.bb = f2;
alert(f1.bb);
在js中,任何一个对象都有可能成为另一个对象的属性。
一个对象可以动态的添加任何一个属性,但是这个对象必须有值,不能是null和undefined。
function Person() {
//do something
}
function P() {
//do something
}
function A() {
//do something
}
function B() {
//do something
}
Person.a = P;
Person.a.b = A;
Person.a.b.c = B;
Person.a.b.c.d = f2;
alert(Person.a.b.c.d); //正确,因为Person.a.b.c是有值的
alert(Person.a.b.c.d.e.f); //错误,不能为Person.a.b.c.d.e增加属性f,因为Person.a.b.c.d.e是undefined
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# javascript
# 面向对象function
# js
# function详解
相关文章:
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
,sp开头的版面叫什么?
湖北网站制作公司有哪些,湖北清能集团官网?
建站168自助建站系统:快速模板定制与SEO优化指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
佛山网站制作系统,佛山企业变更地址网上办理步骤?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
建站之星安装后如何自定义网站颜色与字体?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
实现虚拟支付需哪些建站技术支撑?
电商平台网站制作流程,电商网站如何制作?
深入理解Android中的xmlns:tools属性
动图在线制作网站有哪些,滑动动图图集怎么做?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
h5在线制作网站电脑版下载,h5网页制作软件?
如何通过二级域名建站提升品牌影响力?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星多图banner生成与模板自定义指南
TestNG的testng.xml配置文件怎么写
黑客如何利用漏洞与弱口令入侵网站服务器?
如何选择CMS系统实现快速建站与SEO优化?
javascript中对象的定义、使用以及对象和原型链操作小结
,网站推广常用方法?
Android使用GridView实现日历的简单功能
建站上市公司网站建设方案与SEO优化服务定制指南
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
建站之星logo尺寸如何设置最合适?
网站制作新手教程,新手建设一个网站需要注意些什么?
如何用已有域名快速搭建网站?
太原网站制作公司有哪些,网约车营运证查询官网?
建站之星如何实现PC+手机+微信网站五合一建站?
如何在腾讯云服务器快速搭建个人网站?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何在VPS电脑上快速搭建网站?
建站之星后台管理系统如何操作?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
建站三合一如何选?哪家性价比更高?
如何选择高效响应式自助建站源码系统?
制作企业网站建设方案,怎样建设一个公司网站?
如何生成腾讯云建站专用兑换码?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何制作算命网站,怎么注册算命网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
jQuery 常见小例汇总
*请认真填写需求信息,我们会在24小时内与您取得联系。