手机版

高级JavaScript的闭包、模拟类和继承(5)

时间:2021-10-10 来源:互联网 编辑:宝哥软件园 浏览:

1.javascript 1中的闭包。我们先来了解一下函数的作用域。

2.被调用对象

组合示例:复制代码如下:函数display(某物){ function executed display 1(){ document . write('我在给老板打印: '某物' br/');//引用外部函数{ executeddisplay 1()}的某物参数;//功能显示指内部功能}显示('对不起');//执行后被垃圾收集器回收。3.闭合形成

示例1:复制代码如下: var obj={ };//全局对象函数买房子(价格、面积){return函数(){return '你要付: '的价格*面积;};//以内部函数为返回值} obj.people=buyHouse(12000,80);//保存内部函数对obj对象的people属性的引用。//这样就形成了一个闭包。简单表达式:通过使用嵌套函数的返回值或将其存储在对象的属性中,将嵌套函数的引用保存在全局范围内。document . write(obj . people()' br/');二、复制代码如下:函数add(){ var number=0;return函数(){return数字;};//} var num=add();//现在有4个引用吗?第一个全局创建是一个访问函数,第二个有一个外部函数(这里,Add()指的是一个匿名函数)//第三个是一个匿名函数(即返回函数.指的是Add的局部变量),第四个是全局对象(var num)。//每次调用全局对象时,对象仍然保存在函数体中,所以局部变量的值将保持不变。document . write(num());//等效方法num 2=(function(){ var number=0;return函数(){return数字;}})();//匿名函数,直接赋给全局对象document . write(num 2());例3:实现私有属性复制的代码如下: //使用闭包实现私有属性函数create property (o,property name,check){ var value;o[' get ' property name]=function(){返回值;};//返回一个匿名函数体到属性o[' set ' property name]=function(v){ if(check!Check)//检查参数抛出的合法性('参数错误!');else值=v;};//向对象} var o={ }的属性返回匿名函数体;createProperty(o,' Age ',function(x){返回类型x==' number});//后跟一个匿名函数,执行验证,如果不是数字则返回false o . setage(22);//使用对象的属性document . write(o . getage());//其实上面的函数都保存在全局对象的属性中。其次,javascript中的类也是从一些基本术语开始的。1.原型(prototype)事实上,对象的原型是构造函数的原型值。所有函数都有一个原型属性。创建函数时,它会自动创建和初始化。初始化的值是一个对象。这个对象有一个名为constructor的属性,它指的是与原型相关联的构造函数。复制代码如下:功能人希望(钱、房子){这个。金钱=金钱;this.house=house} people hope . prototype . hope=function(){ document . write('我要自己的钱,房子');};//这是原型,将由构造函数初始化为对象的属性。for(people hope中的var p。原型){文档。写('原型出来了!\ t ' p ' br/');//输出:原型出来了!希望} 2。模拟类实际上只是Javascript中的函数。

直接编码!复制代码如下:功能人希望(钱、房子){这个。金钱=金钱;this.house=housePeopleHope的属性。VERSION=0.1//class people hope . create live=function(){ document . write('在党的领导下,我们的生活很好!');}//class方法必须是类{ 3 }的直接引用。类的继承和复制代码如下:函数create class (name,version) {this。name=name//初始化对象属性this.version=versionCreateClass。作者='弗兰克';//class属性create class . sell house=function(){ document . write('我们是房地产龙头企业万科');};//class create class . prototype.company的方法='万科';上课。prototype . house price=function(){ document . write('大梅沙峰厦卖5000万套,是最畅销的价格!');};//Prototype,其实大家在这里可能会问,这个原型和类方法有什么区别?//其实就是:比如var o=new create class(‘中粮地产’‘一期’);CreateClass函数中的这个为o,为//o.name='中粮地产';O.version=“第一阶段”;没错。//至于原型实际在做什么,你可以理解为“叛徒”。创建对象o时,原型告诉构造函数去掉初始化//,成为对象o的属性. }函数House(名称、版本、城市){ CreateClass.apply(this,[name,version]);//继承构造函数this.city=cityHouse.prototype.housename='半岛花园';}豪斯。原型=新创类(‘中粮地产’‘二期’);//通过new获取CeateClass属性,包括原型对象。//打印函数的原型属性。函数显示原型(c){ for(c . prototype中的var x){ document . write(x ' br/');} } displayPrototype(豪斯);//输出:houserice公司名称版本//删除对象delete House.prototype.name不是原型;//删除删除house . prototype . version;//删除displayPrototype(房屋);//输出:Houseprice公司var客户=新房(‘半岛花园’‘三期’‘西拔牙’);for(var t in customers){ if(customers[t]==' function ')//判断是否为function { customers[t]();//执行继续;//回到这个时间,开始下一个周期} document . write(t ' : \ t ' customers[t]' br/');//输出户名:半岛花园公司:万科大梅沙峰厦卖出5000万套,这是最畅销的价格!名为:半岛花园版:三期城3360西拔牙//实现传承。通过原型。总结:在这里分享这篇文章。有名称空间可以共享。因为学习日程的关系,在这里分享一下Javascript语法吧!下次,我将分享我在javascript客户服务和高级应用程序(如Jquery)上的编程。

版权声明:高级JavaScript的闭包、模拟类和继承(5)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。