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

粉丝网站制作吉林省建设厅网站查询

粉丝网站制作,吉林省建设厅网站查询,优秀网站建设排名公司,无锡网站建设优化内容要点#xff1a; 介绍了三种用以检测任意对象的类的技术#xff0c;instanceof运算符、constructor属性#xff0c;以及构造函数的名字。 但每种技术都不甚完美#xff0c;本节总结了鸭式辩型#xff0c;这种编程哲学更加关注对象可以完成什么工作#xff08;它包含什…内容要点     介绍了三种用以检测任意对象的类的技术instanceof运算符、constructor属性以及构造函数的名字。     但每种技术都不甚完美本节总结了鸭式辩型这种编程哲学更加关注对象可以完成什么工作它包含什么方法而不是对象属于哪个类  一.instanceof运算符      1.左操作数是带检测其类的对象右操作数是定义类的构造函数。如果o继承自c.prototype则表达式 o instanceof c值为true.这里的继承可以不是直接继承如果o所继承的对象继承自另一个对象后一个对象继承自c.prototype,这个表达式的运算结果也是true,      2.构造函数是类的公共标识但原型是唯一的标识。尽管Instanceof运算符的右操作数是构造函数但计算过程实际上是检测了对象的继承关系而不是检测创建对象的构造函数。      3.isPrototypeOf()方法不使用构造函数作为中介来检查对象的原型链上是否存在某个特定的原型对象。         range.methods.isPrototypeOf(r); //range.method 是原型对象      4.instancof运算符和isProtootypeOf()方法的缺点是          我们无法通过对象来获得类名只能检测对象是否属于指定的类名。          在客户端JS中还有一个比较严重的不足就是在多窗口和多框架子页面的Web应用中兼容性不佳。每个窗口和框架子页面都具有单独的执行上下文每个上下文都包含独有的全局变量和一组构造函数。在两个不同框架页面中创建的两个数组继承自两个相同但相互独立的原型对象其中一个框架页面中的数组不是另一个框架页面的Array()构造函数的实例instanceof运算结果是false。 二.constructor属性      1.另一种识别对象是否属于某个类的方法是使用constructor属性因为构造函数是类的公共标识所以最直接的方法就是使用constructor属性比如          function typeAndValue(x){             if(x null ) return ; //Null和undefined没有构造函数             switch(x.constructor){               case Number : return Number x; //处理原始类型               case String : return String: x ;               case Date : return Date x; //处理内置类型               case RegExp : return RegExp: x;               case Complex : return Complex: x; //处理自定义类型                 }            }      需要注意的是在代码中关键字case后的表达式都是函数如果改用typeof运算符或获取到对象的class属性的话它们应当改为字符串。      2.使用constructor属性检测对象属于某个类的技术的不足之处和instanceof一样。在多个执行上下文的场景中它是无法正常工作的比如在浏览器窗口的多个框架子页面中。在这种情况下每个框架页面各自拥有独立的构造函数集合一个框架页面中的Array构造函数和另一个框架页面的Array构造函数不是同一个构造函数。         同样在javascript中也并非所有的对象都包含constructor属性。在每个新创建的函数原型上默认会有constructor属性但我们常常会忽觉原型上constructor属性。比如例9-1和例9-2它们的实例都没有constructor属性。 三.构造函数的名称     1.使用instanceof运算符和constructor属性来检测对象所属的类有一个主要的问题在多个执行上下文中存在构造函数的多个副本的时候这两种方法的检测结果会出错。多个执行上下文中的函数看起来是一模一样但它们是相互独立的对象因此彼此也不相等。     2.一种可能的解决方案是使用构造函数的名字而不是使用构造函数本身作为类标识符。        一个窗口里的Array构造函数和另一个窗口的Array构造函数是不相等的但是它们的名字是一样的。        在一些js的实现中为函数对象提供了一个非标准的属性name用来表示函数的名称。        对于那些没有name属性的javascript实现来说可以将函数转换为字符串然后从中提取出函数名。      3.例9-4可以判断值的类型的typeof()函数         /*以字符串形式返回o的类型如果o是null返回null;如果o是NaN,返回nan。。。如果typeof所返回的值不是object则返回这个值。。如果o的类不是object,则返回这个值如果o包含构造函数并且这个构造函数具有名称则返回这个名称否则一律返回object。*/         function type (o){            var t,c,n;  //type,class,name            //处理null值的特殊情况            if(onull)return null;            //另外一种特殊情况NaN和它自身不相等           if(o!o) return nan;            //如果typeof的值不是object,则使用这个值这可以识别出原始值得类型和函数            if((t typeof o)!object) return t;           //返回对象的类名除非值为object,这种方式可以识别出大多数的内置对象。           if((c classof(o))!Object) return c;          //如果对象构造函数的名字存在的话则返回它           if(o.constructor typeof o.constructor function (n o.constructor.getName())) return n;           //其他的类型都无法判别一律返回Object           return Object;          }         //返回对象的类         function classof(o){           return Object.prototype.toString.call(o).slice(8,-1);          };         //返回函数的名字可能是空字符串不是函数的话返回null          Function.prototype.getName function(){             if(name in this) return this.name;             return this.name this.toString().match(/function\s*([^(]*)\(/)[1])           };          var a new Date();//Date         var b [1,2,3]; //Array         var c {}; //Object         var d true; //boolean         var e 1; //string         var f 1;//number         var g function(){};//function         var h new Function(); //function          console.log(type(g));          这种使用构造函数名字来识别对象的类的做法和使用constructor属性一样有一个问题并不是所有的对象都具有constructor属性。此外并不是所有的函数都有名字。如果使用不带名字的函数定义表达式定义一个构造函数getName()方法则会返回空字符串          //这个构造函数没有名字          var Complex function(x,y){ this.r x;this.iy; }          //这个构造函数有名字          var Range function Range(f,t){ this.from f;this.to t; }转载于:https://www.cnblogs.com/hanxuming/p/5849476.html
http://www.yutouwan.com/news/43720/

相关文章:

  • 中山移动网站设计做网站有年费吗
  • 开发h5网站开发廊坊百度快照优化
  • 河北省老区建设促进会网站定制高端网站
  • html5做静态网站制作h5
  • 做热图的在线网站手机 电脑 同步 wordpress
  • 上海创新网站建设百度一下就一个
  • 摄影比赛投稿网站常州自助建站seo
  • 网站热图分析微信公众号里的小网站怎么做的
  • 安徽省建设质量安全协会网站手机微信一体网站建设
  • 前端开发做网站吗保定市住房保障和城乡建设局网站
  • 荆州网站建设推荐官方网站开发用什么语言
  • 企业网站服务器租用hanchengkeji杭州网站建设
  • 做微信文章的网站电商网站可以用dw做
  • 中山大学精品课程网站手机网页设计尺寸
  • 顶部固定网站模板金阊企业建设网站公司
  • 给企业建设网站的流程图wordpress怎么设置伪静态页面
  • 网站开发财务预算成都百度小程序开发
  • 加强学校网站建设的必要性微信网站设计尺寸
  • wordpress模板网站导航创业做网站APP开发
  • 网站备案号在哪里看网站logo在哪里修改
  • 什么是灰色网站网站建设和维护费用
  • 关于公司网站建设情况的汇报网站建设公司网
  • 网站建设与推广推荐建设网站细节
  • 网站如何paypal支付阿里云自助建站和华为云自助建站
  • 试用网站 建站做网站用php转html
  • 做个游戏网站多少钱代发货网站建设
  • 当当网站建设的目标703804温州论坛
  • wordpress 导航站模板下载滁州建设网站公司
  • 网站建设制作设计营销 上海域名被墙查询检测
  • 长沙口碑好的做网站公司哪家好亚马逊跨境电商怎么开店