全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

javascript 面向对象function详解及实例代码

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小时内与您取得联系。