当前位置: 首页 > news >正文

徐州建设工程招投标官方网站济南网站建设费用

徐州建设工程招投标官方网站,济南网站建设费用,网站建设公司 青岛,做阀门网站电话JavaScript中的Function对象是函数#xff0c;函数的用途分为3类#xff1a;作为普通逻辑代码容器#xff1b;作为对象方法#xff1b;作为构造函数。1.作为普通逻辑代码容器function multiply(x, y) { return x * y;}函数multiply封装了两位数的乘法运算公式#xff1a;…JavaScript中的Function对象是函数函数的用途分为3类作为普通逻辑代码容器作为对象方法作为构造函数。1.作为普通逻辑代码容器function multiply(x, y) {  return x * y;}函数multiply封装了两位数的乘法运算公式var product multiply(128, 128);         // product 16384创建函数实例的方式有3种。第一种是声明式即像声明变量一样将通过function(){}标识符创建的匿名函数直接赋值给变量以该变量作为调用时的函数名称var multiply function(x, y) {    return x * y;}第二种是定义式即以function关键字后跟函数名称及(){}来直接定义命名函数前面第一个multiply函数就是通过定义式创建的。第三种是构造函数式即通过new运算符调用构造函数Function来创建函数。这种方式极不常用因此就不作介绍了。在创建函数的3种方式中声明式和定义式还存在细微的差别。比如下列代码中的函数采用声明式var example function(){    return 1;}example();var example function(){    return 2;}example();执行结果如下12而如果采用定义式即function example() {    return 1;}example();function example() {    return 2;}example();那么会得到另一种结果22即在采用定义式创建同名函数时后创建的函数会覆盖先创建的函数。这种差别是由于JavaScript解释引擎的工作机制所导致的。 JavaScript解释引擎在执行任何函数调用之前首先会在全局作用域中注册以定义式创建的函数然后再依次执行函数调用。由于注册函数时后定义的函数重写了先定义的函数因此无论调用语句位于何处执行的都是后定义的函数。相反对于声明式创建的函数JavaScript解释引擎会像对待任何声明的变量一样等到执行调用该变量的代码时才会对变量求值。由于JavaScript代码是从上到下顺序执行的因此当执行第一个example()调用时example函数的代码就是首先定义代码而当执行第二个example()调用时example函数的代码又变成了后来定义的代码。2.作为对象方法JavaScript在解析代码时会为声明或定义的函数指定调用对象。所谓调用对象就是函数的执行环境。如果函数体内有以关键字this声明的变量则this引用的就是调用对象。事实上在普通的函数中也存在调用对象只不过这个调用对象是默认的全局window对象而已。例如var product window.multiply(128, 128); // product 16384这说明默认情况下在全局作用域中定义或声明的函数的调用对象就是window。在面向对象编程中通常将作为对象成员的函数称为方法。例如var dog    {};dog.name   heibao;dog.age    3 months;dog.shout function() {  return Hello, My name is this.name and I am this.age old!;}dog.shout(); // “Hello, My name is heibao and I am 3 months old!”有意思的是对象也可以借用其他对象的方法var cat    {};cat.name   xiaohua;cat.age    2 years;cat.greet dog.shout;cat.greet();          //“Hello, My name is xiaohua and I am 2 years old!”另外使用函数对象的call和apply方法还可以动态指定函数或方法的调用对象dog.shout.call(cat);  //“Hello, My name is xiaohua and I am 2 years old!”或者dog.shout.apply(cat); //“Hello, My name is xiaohua and I am 2 years old!”3.作为构造函数JavaScript是通过构造函数来模拟面向对象语言中的类的。例如function Animal(sort, character) {   this.sort sort;   this.character  character;}以Animal作为构造函数就可以像下面这样创建一个新对象var dog new Animal(mammal, four legs);创建dog的对象的过程如下首先new运算符创建一个空对象{}然后以这个空对象为调用对象调用函数Animal为这个空对象添加两个属性sort和character接着再将这个空对象的默认constructor属性修改为构造函数的名称即Animal空对象创建时默认的 constructor属性值是Object并且将空对象的__proto__属性设置为指向Animal.prototype——这就是所谓的对象初始化。最后返回初始化完毕的对象。这里将返回的新对象赋值给了变量dog。dog.sort;        // mammaldog.character;   // four legsdog.constructor; // Animal聪明的读者结合前面介绍的内容可能会认为使用new运算符调用构造函数创建对象的过程也可以像下面这样来实现var dog {};Animal.call(dog, mammal, four legs);表面上看这两行代码与var dog new Animal(mammal, four legs);是等价的其实却不是。虽然通过指定函数的执行环境能够部分达到初始化对象的目的例如空对象dog确实获得了sort和character这两个属性dog.sort;        // mammaldog.character;   // four legsdog.constructor; // Object —— 注意没有修改dog对象默认的constructor属性但是最关键的是新创建的dog对象失去了通过Animal.prototype属性继承其他对象的能力。只要与前面采用new运算符调用构造函数创建对象的过程对比一下就会发现new运算符在初始化新对象期间除了为新对象添加显式声明的属性外还会对新对象进行了一番“暗箱操作”——即将新对象的constructor属性重写为Animal将新对象的__proto__属性设置为指向Animal.prototype。虽然手工“初始化对象”也可以将dog.constructor重写为Animal但根据ECMA262规范对象的__proto__属性对开发人员是只读的对它的设置只能在通过new运算符创建对象时由JavaScript解释引擎替我们完成。JavaScript是基于原型继承的如果不能正确设置对象的__proto__属性那么就意味着默认的继承机制会失效Animal.prototype.greet Hi, good lucky!;dog.greet; // undefined事实上在Firefox中__proto__属性也是可写的Animal.prototype.greet Hi, good lucky!;dog.__proto__ Animal.prototype;dog.greet; // Hi, good lucky!但这样做只能在Firefox中行得通。考虑到在兼容多浏览器必须依赖于new运算符才能实现基于原型的继承   转载于http://blog.sina.com.cn/s/blog_81adceb001012n51.html转载于:https://www.cnblogs.com/ellisonDon/archive/2012/08/12/2634421.html
http://www.pierceye.com/news/515802/

相关文章:

  • 九江网站建设九江商标设计网页
  • 网站建设资格预审公告附近广告设计与制作门店电话
  • 百度权重站长工具网页制作工具哪些好用
  • 关键词整站优化公司网站店招用什么软件做的
  • 租车网站模版广州市网站建设 骏域
  • 关闭网站怎么不保存我做的更改人工智能专业
  • ui中有哪些做的好看的网站简单logo设计
  • 深圳大型网站设计公司校园 网站建设 知乎
  • 西部数码网站流量怎么充优化网站界面的工具
  • 街区网站建设东阳市住房和城乡建设局网站
  • 怎样建设网站是什么网站代码制作软件
  • 成华区微信网站建设计公司加盟
  • 找个男做那个视频网站好高端网站建设公司
  • 做网站 毕业设计广东手机网页制作
  • 沈阳口碑最好的男科医院seo排名优化什么意思
  • 光谷做网站推广价格手机网站 教程
  • 泉州做网站多少钱关键词排名快照优化
  • 威海网站建设费用网站不能调用样式
  • 网站链接建设及引流营销世界500强企业中国有几家
  • 哪个网站做网络推好推广引流的10个渠道
  • 上海企业一网通办沂seo网站推广
  • 资阳网站网站建设官方网站建设公司
  • 企业网站建设一条龙服务内容如何自己免费创建网站
  • 重庆智能网站建设多少钱临海做网站
  • 创建好网站如何把浏览器合肥道路建设从哪个网站可以看到
  • 湖北省和建设厅网站自助建站模板
  • 西安网站建设 美科动seo关键词优化哪个平台好
  • 副食店年报在哪个网站做mc建筑网站
  • 网站建设不足之处2017网站设计尺寸
  • 网站架构招聘怎么免费的安装wordpress主题